<script type="text/javascript">
var name = "The Window"; var object = {
name : "My Object", getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //执行后的结果为:The Window
</script> 请教高手执行后的结果为什么会是The Window?
var name = "The Window"; var object = {
name : "My Object", getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //执行后的结果为:The Window
</script> 请教高手执行后的结果为什么会是The Window?
var name = "The Window"; var object = {
name : "My Object", getNameFunc : function(){
return function(){ //如果这里直接return this.name,那得到这个return的handle是object//对象,名字就是"My Object",但是你return了个function,所以下面调用的时候相当于是
//执行了window.getNameFunc()(),这里传入进去this就变成window的name对象,也就是全局变量
//"The Window.
return this.name;
};
}
};
alert(object.getNameFunc()()); //执行后的结果为:The Window
name : "My Object", getNameFunc : function(){
return function(){
return this.name;
};
}
};
2楼的,可不可以将object.getNameFunc()();分以下两步来执行:
第一步:var tempVar = object.getNameFunc();//tempVar指向getNameFunc()方法返回的函数
第二步:var result = tempVar();//此处执行tempVar()函数是在全局作用域里进行的,所以this.name就指向了全局作用域的name,而不是object中的name。
</script>