es5

JavaScript中函数的name属性

廉价感情. 提交于 2019-12-04 00:06:41
JavaScript中函数的name属性 js定义函数时,函数名是可选的,如果一个函数不需要用名称进行引用,则不需要对它进行命名。 命名一个函数时,该名称在整个函数声明范围内是有效的。如果一个命名函数声明在顶层,则 window 对象上的同名属性会引用到该函数。 所有的函数都有一个 name 属性,该属性保存的是该函数名称的字符串。 function foo () { } foo.name // "foo" 这个属性早就被浏览器广泛支持,但是直到 ES6,才将其写入了标准。但是ES6 对这个属性的一些行为做出了一些修改。分以下四种情况: 函数被声明为一个命名函数 这种情况ES5和ES6语法一致, name 属性返回该函数的函数名。 function foo () { } typeof foo // "function" foo.name // "foo" 创建一个匿名函数,并赋值给一个变量 在ES5中,该函数的 name 属性为“”,而 ES6 的 name 属性会返回实际的函数名 var f = function () { }; // ES5 f.name // "" // ES6 f.name // "f" 创建一个匿名函数,将其赋值给一个 window 的属性 在ES5中,该函数的 name 属性返回函数名(window下的赋值属性名),而 ES6 的 name 属性会返回“

JS学习笔记 之 ES5严格模式

让人想犯罪 __ 提交于 2019-12-03 15:05:32
ES标准 经历 es 1.0  es 3.0  es 5.0 ↓ 当前,浏览器是 基于es 3.0 + es 5.0新增方法 实现 ↓ es 3.0 和 es 5.0 存在冲突 ↓ 启用es 5.0的严格模式  -->  有冲突的部分就会使用es 5.0的方法 不启用es 5.0的严格模式  -->  有冲突的部分就会使用es 3.0的方法 es 5.0严格模式 'use strict'  //之所以用字符串进行标识,是因为如果使用类似于strict()函数的形式,某些没有实现ES5规范的浏览器找不到这样的函数,会有风险 (向后兼容,老的浏览器不会报错,新的浏览器能够识别出严格模式)   1. 不再兼容es3的一些不规则语法,使用全新的es5规范   2. 两种用法     - 全局严格模式     - 局部函数内严格模式(推荐)   3. 只是一行字符串,不会对不兼容严格模式的浏览器产生影响   4.   - 不支持with, callee, arguments, func, caller      - 变量赋值前必须声明      - 局部this必须被赋值(Person.call(null/undefined), 赋值什么就是什么)      - 拒绝重复属性和参数(对象中有重复的属性名不会报错,但是后面的属性值会覆盖前面的) 启用es 5.0的严格模式: 1. 在顶端加上'

JS原型,原型链,类,继承,class,extends,由浅到深

我与影子孤独终老i 提交于 2019-12-03 12:19:33
一、构造函数和原型 1、构造函数、静态成员和实例成员 在ES6之前,通常用一种称为构造函数的特殊函数来定义对象及其特征,然后用构造函数来创建对象。像其他面向对象的语言一样,将抽象后的属性和方法封装到对象内部。 function Person(uname, age) { this.uname = uname; this.age = age; this.say = function() { console.log('我叫' + this.uname + ',今年' + this.age + '岁。'); } } var zhangsan = new Person('张三', 18); zhangsan.say(); //输出:我叫张三,今年18岁。 var lisi = new Person('李四', 20); lisi.say(); //输出:我叫李四,今年20岁。 在创建对象时,构造函数总与new一起使用(而不是直接调用)。new创建了一个新的对象,然后将this指向这个新对象,这样我们才能通过this为这个新对象赋值,函数体内的代码执行完毕后,返回这个新对象(不需要写return)。 构造函数内部通过this添加的成员(属性/方法),称为实例成员(属性/方法),只能通过实例化的对象来访问,构造函数上是没有这个成员的。 >> Person.uname undefined

Create custom elements v1 in ES5, not ES6

匿名 (未验证) 提交于 2019-12-03 10:24:21
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Right now, if you follow the exact specifications of v1 of the custom elements spec , it's not possible to use custom elements in browsers that don't support classes. Is there a way to create v1 custom elements without using the class syntax so that they are fully functional in Chrome, FireFox and IE11. Also, since IE11 doesn't have native support for custom elements, I'm assuming we will probably need to use some pollyfills, so what polyfills or libraries do we need in order to make this work in IE11? I've messed around with Polymer 2,

Typescript ReferenceError: exports is not defined

匿名 (未验证) 提交于 2019-12-03 08:30:34
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Trying to implement a module following the official handbook , I get this error message: Uncaught ReferenceError: exports is not defined at app.js:2 But nowhere in my code do I ever use the name exports . How can I fix this? Files app.ts let a = 2; let b:number = 3; import Person = require ('./mods/module-1'); module-1.t export class Person { constructor(){ console.log('Person Class'); } } export default Person; tsconfig.json { "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": false, "sourceMap": true, "outDir":

ES5中的this

你说的曾经没有我的故事 提交于 2019-12-03 07:20:18
参考资料: >>> this的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理: this 永远指向最后调用它的那个对象 下面我们来看一个最简单的例子:(例子均来自参考资料中的经典例子) 例 1: var name = "windowsName"; function a() { var name = "Cherry"; console.log(this.name); // windowsName console.log("inner:" + this); // inner: Window } a(); console.log("outer:" + this) // outer: Window 这个相信大家都知道为什么 log 的是 windowsName,因为根据刚刚的那句话“ this 永远指向最后调用它的那个对象 ”,我们看最后调用 a 的地方 a(); ,前面没有调用的对象那么就是全局对象 window,这就相当于是 window.a() ; 注意,这里我们没有使用严格模式,如果使用严格模式的话,全局对象就是 undefined ,那么就会报错 Uncaught TypeError: Cannot read property 'name' of undefined 。 例 2: var name = "windowsName"; var a = { name:

JavaScript中的数组Array

廉价感情. 提交于 2019-12-03 05:30:47
抄自: https://www.jianshu.com/p/7e160067a06c js中数组的方法种类众多,有ES5之前版本中存在的,ES5新增,ES6新增等;并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中原型上的方法。 一、创建数组的方式 1. 字面量方式 var arr1 = []; //创建一个空数组 var arr2 = [5]; //创建一个具有单个元素的数组 var arr3 = [5,6,7]; //创建一个具有多个元素的数组 2. 构造函数方式 var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(5); //创建一个长度为5,值为空的数组 var arr3 = new Array(5,6,7); //创建一个具有多个元素的数组 二、数组方法 //方法名 对应的版本 功能 原数组是否修改 concat() ES5- 合并数组,并返回合并之后的数据 n join() ES5- 使用分隔符,将数组转为字符串并返回 n pop() ES5- 删除最后一位,并返回删除的数据 y shift() ES5- 删除第一位,并返回删除的数据 y unshift() ES5- 在第一位新增一或多个数据,返回长度 y push() ES5- 在最后一位新增一或多个数据,返回长度 y

TypeScript use dynamic import in ES5 with Bluebird

匿名 (未验证) 提交于 2019-12-03 02:31:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm trying to use the new dynamic import() function in TypeScript, but I get the following error: TS2712: A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your --lib option. I could include the ES2015.promise lib in my tsconfig like the message suggests, but that would make me lose type safety as I'm using Bluebird promises. I know it is possible to use Bluebird for async/await in TypeScript, so I suppose this should also work the same

Angular 2 dependency injection in ES5 and ES6

匿名 (未验证) 提交于 2019-12-03 01:49:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Here is a basic TypeScript/ES.next example that uses decorators for DI and follows the syntax suggested by the framework manual: import {Component, Inject, Injectable, NgModule, OpaqueToken} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; const CONSTANT = { value: 'constant' }; const CONSTANT_TOKEN = new OpaqueToken; const CONSTANT_PROVIDER = { provide: CONSTANT_TOKEN, useValue: CONSTANT }; @Injectable() class Service { constructor(

ts An async function or method in ES5/ES3 requires the 'Promise' constructor

匿名 (未验证) 提交于 2019-12-03 01:47:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: Hello I'm Using async/await in my TypeScript Project, But I Get this log: [ts] An async function or method in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your --lib option. How Can I Solve That? 回答1: As the error message says, add lib: es2015 to your tsconfig.json // tsconfig.json { "compilerOptions" : { "lib" : [ "es2015" ] } } 回答2: Try this package which contains type definitions for es6-promise npm install --save @types/es6-promise 回答3: If you