Я читаю через http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ и пытаюсь лучше понять «это».Доступ к данным объекта с помощью forEach, без использования forAach's thisArg?
Однако я столкнулся с чем-то, что меня сбивает с толку: я не могу получить доступ к данным объекта (в данном случае объекта «пользователь»), не используя аргумент «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 неопределен ":
console.log (this.user.data.name);
Что мне не хватает? Невозможно ли «отступить» и, внутри forEach, получить доступ к информации об объекте без использования этогоArg? Или, может быть, что эквивалентно «человеку», написанному долго?
'user.data' является массивом. Попробуйте 'console.log (user.data [0] .name);' вместо – friedi
@friedi Спасибо, это действительно сработало. Однако, поскольку это цикл forEach, есть ли способ распечатать оба имени? Или это то, где thisArg становится необходимым, или цикл «for» внутри цикла forEach? EDIT: Хорошо, тантал сказал «нет» ниже. – Terf