当前位置:编程学习 > JAVA >>

关于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 为什么打印出来的是空的

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,