ECMAScript 6 新特性.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECMAScript 6 新特性 箭头函数和静态this(Arrows and Lexical This) 箭头函数使用胖箭头(=)语法,与C#,Java 8和CoffeeScript类似。支持表达式和语句作为函数体。不像普通函数,箭头函数的this是和文法作用域绑定的。 // 表达式作为函数体 var odds = evens.map(v = v + 1); var nums = evens.map((v, i) = v + i); // 语句作为函数体 nums.forEach(v = { if (v % 5 === 0) fives.push(v); }); // 静态this var bob = { _name: Bob, _friends: [], printFriends() { this._friends.forEach(f = console.log(this._name + knows + f)); } }; 类(Classes) ES2015中的类是对基于原型面向对象模式的一个简单语法糖。有一个单一的声明形式可以使类模式更容易使用,并鼓励互操作性。类支持基于原型的继承,超类调用(super),实例方法,静态方法和构造函数。 class SkinnedMesh extends THREE.Mesh { constructor(geometry, materials) { super(geometry, materials); this.idMatrix = SkinnedMesh.defaultMatrix(); this.bones = []; this.boneMatrices = []; //... } update(camera) { //... super.update(); } static defaultMatrix() { return new THREE.Matrix4(); } } 增强对象字面量(Enhanced Object Literals) 对象字面量被扩展支持直接设置原型,简洁属性赋值和方法,超类调用。这也让对象字面量和类声明的关系更密切,并让基于对象的设计更便利。 var obj = { // __proto__ __proto__: theProtoObj, // 下面的写法不会设置内部原型 __proto__: somethingElse, // ‘handler: handler’的简写 handler, // 方法 toString() { // 调用父对象的方法 return d + super.toString(); }, // 属性名是一个表达式 [ prop_ + (() = 42)() ]: 42 }; __proto__属性需要原生支持,这一属性在ECMAScript前一个版本中一度被废弃。目前为止,大部分引擎支持这一属性。同时需要注意,仅仅web浏览器需要实现这一属性,在Node中现在就可使用。 模版字符串(Template Strings) 模版字符串提供构建字符串的语法糖。这类似Perl,Python等其他语言中的字符串插值。可以选择性添加一个标签,允许对字符串构建的定制化,避免注入攻击或其他需求。 // 普通字符串 `This is a pretty little template string.` // 多行字符串 `In ES5 this is not legal.` // 字符串中嵌入变量 var name = Bob, time = today; `Hello ${name}, ${time}?` // 模版标签 String.raw`In ES5 \n is a line-feed.` // 下面构造一个HTTP请求头,来解释差值替换和构造 GET`/bar?a=${a}b=${b} Content-Type: application/json X-Credentials: ${credentials} { foo: ${foo}, bar: ${bar}}`(myOnReadyStateChangeHandler); 解构(Destructuring) 按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。解构失败是静默的,类似标准的对象属性查找foo[“bar”],找不到值则为undefined。 // 列表匹配

文档评论(0)

5500046 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档