javascript - 闭包,最后一个return 为什么是The Window?
本文介绍了javascript - 闭包,最后一个return 为什么是The Window?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
根据作用域链的原理,最后this.name不应该在object里面找吗?
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
alert("My Object "+this.name); //MyObject
return function () {
alert("The Window "+this.name);
return this.name;//This Window
}
}
};
解决方案
你这段代码其实没有必要用 作用域链
来解释
函数体内部的this指向是根据函数调用者来决定的。
我完善了一下你的代码,你应该能理解了。
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function () {
console.log("My Object ====>" + this.name); //MyObject
return function () {
console.log("The Window =====>" + this.name);
console.log('this.name ====>'+this.name) ;//This Window
}
}
};
var obj = object.getNameFunc();
obj();
obj.call(object); // 这里通过call方法,改变了函数内部的this指向
这篇关于javascript - 闭包,最后一个return 为什么是The Window?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文