javascript 匿名函数中this为什么是window对象
展开全部
this
含义:表示函数的所有者或作用域。JavaScript与this相关的难题是,不能保证对函数应用那个作用域?
问题:
window.onload=function(){
window.name="window";
/*
*字面值对象actionScope方法:
*myScope():它在控制台输出"name: " + this.name,其
*属性insideScope在控制台输出"insidename: " + this.name
*/
var actionScope = {
name: "jjjaiyy",
myScope: function(){
console.log("name: " + this.name); //name: jjjaiyy
insideScope = function(){
console.log("insidename: " + this.name); //insidename: window
};
insideScope(); //执行
}
};
actionScope.myScope();
}
问题来了?(匿名函数中this为什么是window对象)
因为嵌套函数(insideScope()) 与 包围对象的内部函数(myScope() )的执行环境分离开了,并且所有无作用域的函数(只有全局对象)自动变成窗口对象的属性。
解决:
使用bind()方法。
myScope: function(){
console.log("name: " + this.name); //name: jjjaiyy
insideScope = function(){
console.log("insidename: " + this.name); //insidename: jjjaiyy
}.bind(this);
insideScope(); //执行
}
bind()方法,使用apply()方法把函数绑定到传递给对象的对象(将这个方法绑定到父对象中),共享执行环境。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询