作家
登录

别再为了this发愁了:JS中的this机制

作者: 来源: 2017-04-06 16:04:32 阅读 我要评论

  •  
  • var person2= { 
  •  
  •     name"Reader" 
  •  
  • }; 
  •  
  • identify( person1); // KYLE 
  •  
  • identify( person2); // READER 
  •  
  • sayHello( person1); // Hello, I'm KYLE 
  •  
  • sayHello( person2); // Hello, I'm READER  
  • 细心一看,这位客长给出的解决办法切实其实也达到了类似的效不雅。赞一个!我想说的是,跟着代码的增长,函数嵌套、各级调用等变得越来越复杂,那么传递一个对象的引用将变得越来越不明智,它会把你的代码弄得异常乱,甚至你本身都无法懂得清跋扈。而this机制供给了一个加倍优雅而灵活的筹划,传递一个隐式的对象引用让代码变得加倍简洁和复竽暌姑。好了,知道了this的用处,那么再看看我们对它的误会。

    3、关于this的误会

    1. function fn() { 
    2.  
    3.     console.log( this.a ); 
    4.  
    5.  
    6. var obj = { 
    7.  
    8.     a: 2, 
    9.  
    10.     fn: fn 
    11.  
    12. }; 
    13.  
    14. var bar = obj.fn; // 函数引用传递 
    15.  
    16. var a = "全局"; // 定义全局变量 
    17.  
    18. bar(); // "全局"  

    信赖很多童鞋是学过其它说话的,在很多编程说话中都有this的机制,惯性思维把其它说话里对它的懂得带到了JavaScript中。同时,因为this这个单词典懂得导致了我们产生了对它各类各样的误会。所以,开端前,我们先澄清下对它的误会。

    3.1 误会一:this引用function本身

    我们都知道,在函数里引用函数可以达到递归和给函数属性赋值的效不雅。而这在很多应用处景下显得异常有效。所以,很多人都误认为this就是指引function本身。例如:

    1. function fn(num) { 
    2.  
    3.     console.log( "fn: " + num ); 
    4.  
    5.     // count用于记录fn的被调用次数 
    6.  
    7.     this.count++; 
    8.  
    9.  
    10. fn.count = 0; 
    11.  
    12. var i; 
    13.  
    14. for (i=0; i<10; i++) { 
    15.  
    16.     if (i > 5) { 
    17.  
    18.         fn( i ); 
    19.  
    20.     } 
    21.  
    22.  
    23. // fn: 6 
    24.  
    25. // fn: 7 
    26.  
    27. // fn: 8 
    28.  
    29. // fn: 9 
    30.  
    31.   
    32.  
    33. console.log( fn.count

        推荐阅读

        监测和管理:现代数据中心的主要考虑因素

      上个月,我们在《创建数据中间监控筹划的最佳实践筹划》一文中商量了一个异常有趣的话题。然则,似乎关于这方面话题的评论辩论远未停止。在以前的一个月中,我收到了大年夜量关于现代数据>>>详细阅读


      本文标题:别再为了this发愁了:JS中的this机制

      地址:http://www.17bianji.com/lsqh/34612.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)