在我向其中添加最后一个属性之前,我有一段有效的代码。我知道 javascript 中的这个问题。但这是我以前从未遇到过的。
var name = "John Dane";
var age = 24;
var person = {
id: 'emp133y1998',
name, age,
forEach: function(action) {
for (var prop in this) {
if(prop === 'forEach') continue;
action(this[prop]);
}
},
this: name +" "+ age
};
person.forEach(e => say(e));
如果 this
是关键字,我们如何将其用作属性名称。更奇怪的是我实际上可以像这样访问它 person.this
。但不幸的是,我的 forEach
方法在此之后崩溃了。所以我删除了它。我还在学习阶段。谁能解释这里到底发生了什么?
最佳答案
this
是保留关键字 as of ECMAScript 2015规范。
该语言允许您使用括号语法或不使用 @squint 提及的保留关键字来声明属性名称。
注意:从 ES5 开始不支持保留字的裸使用。
适用于浏览器环境的示例:
// this code works on before ES5 and onward
// this bracket syntax for maximum portability of your code
var obj = {};
obj['this'] = 'hello i am this'; // bracket syntax
obj['for'] = 'hello i am for';
alert(obj['this']);
alert(obj['for']);
// this code works on ES5 and onward
var obj = {};
obj.this = 'hello i am this'; // bracket syntax
obj.for = 'hello i am for';
alert(obj.this);
alert(obj.for);
IMO:我建议不要使用 this
或其他保留关键字作为属性名称,因为这可能会产生字幕错误,并且可能会混淆人类和构建工具。
关于javascript - "this"真的是 Javascript 中的关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42657611/