Javascript 为什么会有这样的背景?
为什么7行返回对象窗口 为什么不是运动对象Javascript 为什么会有这样的背景?,javascript,Javascript,为什么7行返回对象窗口 为什么不是运动对象 var sport = { caption: "2017", players : [{"name":"cat"},{"name":"dog"}] , show: function() { this.players.forEach(function(entry) { console.log(entry.name); console.log(this);//window }); } } sport.show(); 此指
var sport = {
caption: "2017",
players : [{"name":"cat"},{"name":"dog"}] ,
show: function() {
this.players.forEach(function(entry) {
console.log(entry.name);
console.log(this);//window
});
}
}
sport.show();
此
指的是它所在的匿名函数的作用域,即窗口
var sport={
玩家:[1,2,3],
show:function(){
this.players.forEach(函数(条目){
控制台日志(条目);
//这是指匿名函数的作用域,即窗口
console.log(this);
});
}
}
//体育节目();
变量sport2={
玩家:[3,4,5],
show:function(){
//这是指它所在的对象范围-
//在这种情况下,这将是“sport2”
var self=这个;
this.players.forEach(函数(条目){
控制台日志(条目);
//在sport2范围内,self现在是“this”的同义词。
控制台日志(self);
});
}
}
sport2.show()代码>使用箭头函数。此函数的范围取决于执行上下文,并且是后期绑定的。搜索SO和web,您会发现很多关于这方面的讨论。”如果为forEach()提供thisArg参数,它将用作回调函数的this值。否则,未定义的值将用作其this值。回调函数最终可观察到的this值将根据确定函数所见this值的常规规则来确定。“-“使用严格”
为什么它是sport
对象而不是sport.players
数组?为什么是下一票?因为这个
几乎从来没有提到过函数建议:在函数中你可以定义var self=this
@Nayuki它也不起作用,因为什么时候该方法被称为它的上下文它的windows对象如果答案是可以接受的,请检查并删除否决票。我不想误导未来的人。