this对象是在运行时基于函数执行环境绑定的,在全局函数中,this=window,在函数被作为某个对象的方法调用时,this等于这个对象。
但是匿名函数的执行环境是全局性的,所以匿名函数的this指向是window
var name = ‘window‘ var person = { name :‘Alan‘, sayName:function () { return function () { console.log(this.name) } } } person.sayName()() // window
这里sayName方法return了一个匿名函数,这个匿名函数中this指向window
解决方法还是有的,我们可以把外部作用域的this传递给匿名函数
var name = ‘window‘ var person = { name :‘Alan‘, sayName:function () { var that = this return function () { console.log(that.name) } } } person.sayName()() // Alan
原文地址:https://www.cnblogs.com/showcase/p/10498790.html
时间: 2024-10-31 18:35:57