javascript - "this"真的是 Javascript 中的关键字吗?

标签 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 方法在此之后崩溃了。所以我删除了它。我还在学习阶段。谁能解释这里到底发生了什么?

最佳答案

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/

相关文章:

javascript - 根据 ng-table 行单击更改 uib-tabset 内容

javascript - Push方法将数组转换为组件状态中的数字

javascript - 不同变量的单一数据类型

javascript - Eloquent JavaScript - 通过此关键字引用不起作用?

javascript - 从路由提供者访问 Controller 数据

javascript - 尝试制作可重用代码,使用函数参数填充名为目标的变量区域

c++ - 在 C++ 中返回 "This"对象的函数

javascript - 在不使用 "this"的情况下在对象中定义 JavaScript get 和 set 函数?

javascript - Angular JS 使用 controllerAs 和带有作用域或 this 变量的语法

javascript - 使用 ReactJS 在 ES6 类中嵌套 "this"绑定(bind)