【发布时间】:2014-11-04 16:45:02
【问题描述】:
我正在阅读http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ 并试图更好地理解“这个”。
但是我遇到了一些让我困惑的事情:如果不使用 forEach 的“this”参数,我似乎无法访问对象数据(在这种情况下是“用户”对象)。
我可以通过这种方式获取信息:
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"
但是,下面会出现“未定义”:
console.log (user.data.name);
或者这会带来“this.user is undefined”:
console.log (this.user.data.name);
我错过了什么?不使用 thisArg 就不能“回溯”并在 forEach 中访问对象信息吗?或者,什么是长边写的“人”的等价物?
【问题讨论】:
-
user.data是一个数组。改用console.log(user.data[0].name); -
@friedi 谢谢,确实有效。但是,由于它是一个 forEach 循环,有没有办法让它打印出两个名称?或者是 thisArg 成为必要的地方,还是 forEach 循环中的“for”循环?编辑:好的,钽在下面说“不”。
标签: javascript object foreach undefined this