“这个”真的是Javascript中的关键字吗?

时间:2017-03-07 20:22:55

标签: javascript this

我有一段工作代码,直到我添加了最后一个属性。我在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方法在此之后破裂了。所以我删除了它。我还在学习阶段。谁能解释一下这里到底发生了什么?

1 个答案:

答案 0 :(得分:2)

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或其他保留关键字作为属性的名称,否则可能会造成字幕错误,并且可能会让人混淆并构建工具。