当我阅读 MDN 文档时,我得到了以下对象语法,
var o = {
a: 7,
get b() {
return this.a + 1;
},
set c(x) {
this.a = x / 2;
}
};
// ...
Run Code Online (Sandbox Code Playgroud)
从这里。起初我以为,它只适用于get& set。但后来我看到了这个,
// ...
const handler = {
getPrototypeOf(target) {
return monsterPrototype;
}
};
// ...
Run Code Online (Sandbox Code Playgroud)
从这里。当我使用自定义函数进行测试时,它起作用了。这里,
let obj = {
_sum: 0,
sum(a, b) {
return this._sum += (a + b);
}
}
console.log(obj.sum(2, 3)); // int 5
console.log(obj.sum(7, 3)); // int 15
console.log(obj.sum(25, 75)); // int 115
Run Code Online (Sandbox Code Playgroud)
它也可以像这样使用表达式!!
let obj = {
_sum: 0,
['su' + 'm'](a, b) {
return this._sum += (a + b);
}
}
console.log(obj.sum(2, 3)); // int 5
console.log(obj.sum(7, 3)); // int 15
console.log(obj.sum(25, 75)); // int 115
Run Code Online (Sandbox Code Playgroud)
我搜索了 MDN,搜索了新的对象方法语法,但仍然找不到这种语法。所以,我只想知道它是我可以使用的标准语法还是实验技术。我正在使用Chome v79。
您正在使用 ES6 中引入的两种类型的语法。第一个称为“速记方法名称”,另一个称为计算属性名称。因此,它们不被视为实验性技术,并且自 2015 年以来一直是标准的一部分。您可以在规范的第 14.3节中找到简写方法名称的语法,以及在第12.2.6节中找到计算属性名称。
简写方法名称允许您省略function关键字,以便将方法的名称用作属性名称:
在 ECMAScript 2015 中,提供了简写符号,因此不再需要关键字“function”。
最后一个代码块结合了简写方法名称和计算属性名称,以在运行时创建方法名称sum。计算属性名称允许您将属性作为表达式添加到对象文字,这意味着它不仅必须用于对象方法,还可以用于标准对象文字属性:
const obj = {
["k" + "ey"]: 1
}
console.log(obj.key); // 1Run Code Online (Sandbox Code Playgroud)
您可以在大多数现代浏览器中使用速记方法名称和计算属性名称,但是,Internet Explorer 目前不支持这两种语法。
您可以在此处阅读有关对象中方法定义的更多信息
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |