mooz={
  mult:6,
  xm:function(){
     document.write(mult)
  }
}
window.onload=function(){
   mooz.xm();
}
结果报mult未定义,把mult改成字符串就好了,这是为什么啊,

解决方案 »

  1.   

     document.write(this.mult);
      

  2.   

    可以了,为什么加个this就可以了呢,内部函数不是可以直接引用函数外部的变量吗,
    闭包原理里不就就是这么说的吗
      

  3.   

    mooz是对象,不是函数,对象内的匿名函数显然不知道mult是什么东西,必须通过this指向函数调用者。
      

  4.   


    你这个不是闭包啊。。
    var mooz={
      mult:6,
      xm:function(){
      document.write(mult)
      }
    }以下的例子才是闭包
    var mooz = function(){
       var mult = 6;
       return {
          xm : function(){
               document.write(mult)
          }
       }
    }()