关于JAVASCRIPT闭包的问题
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function() {
return function() {
return that.name;
};
}
};
alert(object.getNameFunc()());
此段程序,当object的getNameFunc()进入解释器时,getNameFunc()的作用域链中都有哪些对象,object是否在其作用域链中?
追问:那getNameFun作用域链中都有哪些对象,定义此getNameFun的环境不应该是object吗?但是这段代码运行结果是alert出 “the window" 就是说而不是object里面的name,这是为什么我就想知道调用这个getNameFun时它的作用域链里到底有哪些对象,为什么找到的不是object里面的name.第六行的that换成this刚才分神打错了。。。- -!我换一个写法吧:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function() {
var temp = function() {
return name;
};
return temp;
}
};
var test = object.getNameFunc();
alert(test());
我的理解,temp的scope chain应该包含temp的活动对象,getNameFunc的活动对象,object对象和window对象,层层找name找到应该是object的name。我理解误区在哪?
其他:当然不在了,在你的代码中:object是一个类对象,name是属性,getNameFunc是方法;不过,方法中都是可以用name属性
上一个:myeclipse下项目缺少tomcat的包报错
下一个:java 为什么打印出来的是空的