当它进入Object.map时,“ this”会发生什么

时间:2019-01-16 00:24:02

标签: reactjs

有人知道“这件事”怎么了吗?

    console.log('check 1', this) //{activateLasers: ƒ, …}
    Object.keys(modelData).forEach(function(key, index1) {
    console.log('check 2', this) //undefined

2 个答案:

答案 0 :(得分:2)

此上下文在地图内部发生变化。

Array.prototype.map()使用第二个参数来设置其在映射函数中的引用。

您可以将其显式传递给map函数以保留上下文。

array.map(function(i) {
  ...
} , this)

以您的情况

array.forEach(function(key, i) {
    ....
}, this)

或者,您可以使用ES6箭头功能自动保留当前的此上下文

array.map((i) => {
  ...
})

答案 1 :(得分:-1)

似乎您是在严格模式下编写代码。 this未定义,因为这是该语言的工作方式。

javascript中的

this是一种语法结构。调用类或对象方法时,通常以类似于obj.method()的方式进行操作。该语言使用.()看到句法模式,并在this内创建method obj。如果您没有看到该模式(并且未使用=>函数,则应该很好地提示它可能是undefinedwindow