jtandygod 2013-04-11 21:17 采纳率: 100%
浏览 218
已采纳

javascript:这里的this所示变量还有什么实际意义呢?

this方法有什么用呢?这种方法必须要有具体的绑定对象才能调用的呀,但是由于是匿名函数自执行,还有绑定对象么?写this属性还有意义么?
[code="java"]ClassID=(function(){  
     var id =0 ; //私有的那个值  静态私有属性   
     this.get1=function(){
         return id;
     };
     return function (){ //外层函数返回一个有权访问私有值的嵌套的函数,就是我们保存在ClassID中的嵌套函数  
         this.getId=function(){
             get1();
         }
     };   
})();  

ClassID.get3=function(){
     return get1();
}
alert(ClassID.get3());//0
[/code]
但是这段书上代码竟然可用 我实在是不理解了 求解

  • 写回答

4条回答 默认 最新

  • iteye_9831 2013-04-12 09:14
    关注

    [quote]this方法有什么用呢?这种方法必须要有具体的绑定对象才能调用的呀,但是由于是匿名函数自执行,还有绑定对象么?写this属性还有意义么?[/quote]

    楼主说的是对的,就这段代码来说,里面的this完全没用。

    这段代码能正常运行,完全因为里面的this其实就是window对象。在楼主给出的代码里,把this去掉(或者把this改成window),效果相同。(因为默认的作用域对象还是window)

    所以说,楼主的结论:自执行的匿名函数,写this没有意义。是正确的。

    总之,这是一段非常混乱的代码:

    那个return的function完全是废物代码,没用。
    [code="javascript"]ClassID=(function(){

    var id =0 ; //这个id的确只局限于匿名函数内有效

    this.get1=function(){//这儿的this就是window
    return id; //因为get1函数被赋值在window上,所以形成了一个闭包,从而在离开了匿名函数的执行范围以后id变量仍然存活,可以通过闭包来访问
    };

    return function (){}; //这儿只是个普通对象而已,下面没执行这个函数

    })();

    ClassID.get3=function(){ //ClassID是个函数,函数也是个对象,对象也可以赋值,在ClassID对象上增加一个函数get3
    return get1(); //这儿访问的是window.get1()
    }

    alert(ClassID.get3());//0 [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退