发布网友 发布时间:2022-04-07 09:37
共2个回答
热心网友 时间:2022-04-07 11:06
刚开始学,很容易对javascript中的this搞得晕头转向,因为它指向谁,取决于它所在的地方。
在方法中,this 表示该方法所属的对象。
如果单独使用,this 表示全局对象。
在函数中,this 表示全局对象,在严格模式下,this 是未定义的(undefined)。
在事件中,this 表示接收事件的元素。
类似 call() 和 apply() 方法可以将 this 引用到任何对象。
你这个例子里就属于单独使用,所以这里的this代表的是全局对象,浏览器环境下就说window了。
把你的例子稍微改一下:
var obj = {
a: 20,
b: function(){ return this.a+= 10 }
}
这时候执行 obj.b(),就发现这里的this指向的是obj了,也就算上述的第一条。关于this的指向要多练习,多思考,因为它确实乱糟糟,所以在ES6中出现了箭头函数,缓解了这个噩梦。
追问1
热心网友 时间:2022-04-07 12:24
b是obj的属性,b1是c的属性,请注意,它们并不是方法或函数,所以它们并没有你所谓的“运行”,所以this只能指向全局对象也就是window