ECMAScript 6 中最主要的 OOP 新特性是类,除此之外,也包含了一些对象字面量(object literals)的新特性和对象新的可用方法。本文将主要描述这些内容。
对象字面量的新特性
方法定义
在 ECMAScript 5中,方法是函数值的属性:
1 2 3 4 5 |
var obj = { myMethod: function () { ··· } }; |
在 ECMAScript 6中,方法依旧是函数值的属性,但现在定义方式更简洁了:
1 2 3 4 5 |
let obj = { myMethod() { ··· } }; |
Getters 和 setters 依旧像 ECMAScript 5 那样使用(注意方法定义的语法相似度)
1 2 3 4 5 6 7 8 9 10 |
let obj = { get foo() { console.log('GET foo'); return 123; }, set bar(value) { console.log('SET bar to '+value); // return value is ignored } }; |
让我们使用obj:
1 2 3 4 5 6 |
> obj.foo GET foo 123 > obj.bar = true SET bar to true true |
还有一种简明方式来定义生成函数值的属性:
1 2 3 4 5 |
let obj = { * myGeneratorMethod() { ··· } }; |
这段代码相当于:
1 2 3 4 5 |
let obj = { myGeneratorMethod: function* () { ··· } }; |
属性值简写
属性值简写能让你将属性定义简写成对象字面量:如果变量的名称指定的属性值也是属性键,你就可以省略键,如下所示:
1 2 3 |
let x = 4; let y = 1; let obj = { x, y }; |
最后一行相当于:
s6-oop.html">www.2ality.com。欢迎加入翻译组。 ECMAScript 6 中最主要的 OOP 新特性是类,除此之外,也包含了一些对象字面量(object literals)的新特性和对象新的可用方法。本文将主要描述这些内容。 对象字面量的新特性方法定义在 ECMAScript 5中,方法是函数值的属性:
在 ECMAScript 6中,方法依旧是函数值的属性,但现在定义方式更简洁了:
Getters 和 setters 依旧像 ECMAScript 5 那样使用(注意方法定义的语法相似度)
让我们使用obj:
还有一种简明方式来定义生成函数值的属性:
这段代码相当于:
属性值简写属性值简写能让你将属性定义简写成对象字面量:如果变量的名称指定的属性值也是属性键,你就可以省略键,如下所示:
最后一行相当于:
|