我正在阅读http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/并尝试更好地理解"这个"。
但是我遇到了令我困惑的事情:我似乎无法访问对象数据(在这种情况下是"用户"对象)而不使用forEach' s&#34 ;这"论点。
我可以通过这种方式获取信息:
var user = {
tournament:"The Masters",
data :[
{name:"T. Woods", age:37},
{name:"P. Mickelson", age:43}
],
clickHandler:function () {
this.data.forEach (function (person) {
console.log (person.name);
})
}
}
user.clickHandler(); //"T. Woods", "P. Mickelson"
然而,下面提到" undefined":
console.log (user.data.name);
或者这会导致" this.user未定义":
console.log (this.user.data.name);
我错过了什么?不可能"回溯"并且,在forEach中,不使用thisArg访问对象信息?或许,等同于" person"写得很长?
答案 0 :(得分:1)
根据MDN's forEach documentation:
如果向
thisArg
提供了forEach
参数,则会在调用时将其传递给回调,以用作此值。否则,将传递值undefined
以用作此值。
所以不可能"回溯"并在不使用thisArg
的情况下访问对象信息。
答案 1 :(得分:1)
data是一个对象数组,而不是一个关联数组, 所以试试像:
console.log (user.data[0].name);
或
console.log (this.user.data[0].name);
获取您的数据。
你需要将一个参数传递给forEach以使这个值成为
clickHandler:function () {
this.data.forEach (function (value) {
console.log (value.name);
})
}
http://jsfiddle.net/t7fvj0zp/1/
希望我帮助