web_東
2019-08-04 19:16
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
console.log(object.getNameFunc());
//输出 this Window
闭包,内部函数不能访问外部函数的this与argum,如果想要访问到,需要在外部函数保存this,使内部函数可以调用到。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
let that = this
return function(){
return that.name;
};
}
};
console.log(object.getNameFunc());
//输出 My ObjectMy
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
console.log(object.getNameFunc());楼主你漏了一个括号,应该是object.getNameFunc()().可以等同于一个函数表达式,即
var fun = object.getNameFunc();这里返回一个函数声明:
function(){
return this.name;
}
fun();最后再调用fun();返回this.name
当函数并非作为一个对象的属性而是被调用时,this被绑定到全局变量,即指向window。所以这里返回的this.name 不是对象中的name,而是window中的全局变量name,即The window。
<script type="text/javascript">
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return this.name;
}
};
document.write(object.getNameFunc());
不是很懂?
JavaScript进阶篇
469061 学习 · 22582 问题
相似问题