解决方案 »

  1.   

    你不是把 o 返回(return o;) 给了 myTest 吗?
      

  2.   

    var myTest=Person("xiaoming");
    執行后
    myTest.sayName = function(){
    alert("xiaoming");
    }所以 執行myTest.sayName 會 alert("xiaoming");
      

  3.   

    这应该不是闭包。闭包是使用了外部变量的函数。而这个sayName()函数使用的变量 name  是一个局部变量。
      

  4.   

    当一个js的function 运行时候函数变成Function对象 他隐含一个对象 context
    function(){
       alert(name);
    }
    当有这句的时候 编译认为  name会被访问 所以 name会被 所在位置的 context记住  
    (注意只有会被访问的属性才会被context记住)
    然后当运行到alert(name)的时候  从当前context开始查找name  
    没有? 那么从父运行的Function的context 查找
    有?则获取
    没有?则继续
    所有的context都没有? 那么就访问 window下
    还是没有?  你懂的
      

  5.   


    o是Person函数的局部变量,sayName()是o的方法,现在在Person函数外面调用到了局部变量o的方法,这还不算闭包吗