作家
登录

JavaScript中this的运行机制及爬坑指南

作者: 来源: 2018-03-16 08:43:31 阅读 我要评论

count: 0, 
  •     // Sloppy-mode method 
  •     inc: function () { 
  •         this.count++; 
  •     } 
  • callIt(counter.inc); 
  • // Didn’t work
  • console.log(counter.count); // 0 
  • // Instead, a global variable has been created 
  • // (NaN is result of applying ++ to undefined): 
  • console.log(count); // NaN 
  • 如不雅在严格模式下把一个办法作为函数来调用,this为undefined。 同时会获得一个警告:

    1. var counter = {  
    2.     count: 0,  
    3.     // Strict-mode method  
    4.     inc: function () {  
    5.         'use strict' 
    6.         this.count++;  
    7.     }  
    8.  
    9.  
    10. callIt(counter.inc);  
    11. // TypeError: Cannot read property 'count' of undefined  
    12. console.log(counter.count);  
    13. 修改办法是应用bind():  
    14. var counter = {  
    15.     count: 0,  
    16.     inc: function () {  
    17.         this.count++;  
    18.     }  
    19.  
    20. callIt(counter.inc.bind(counter));  
    21.  
    22. // 成功了!  
    23. console.log(counter.count); // 1 

    bind()创建了一个新的函数,它老是能获得一个指向counter的this。

    当在一个办法中应用通俗函数时,很轻易忘记前者具有其本身this(即使其不须要this)。 是以,你不克不及早年者引用该办法的this,因为该this会被掩蔽。 让我们看看竽暌箍现问题的例子:

    1. var obj = {  
    2.     name'Jane' 
    3.     friends: [ 'Tarzan''Cheeta' ],  
    4.     loop: 

        推荐阅读

        重磅消息:微软 Service Fabric 正式开源

      有奖调研 | 人脸辨认功能在互联网行业认知度情况经由过程应用法度榜样级其余感知和洞察,为微办事带来编排和主动化的优势 微软的 Azure Service Fabric 的官方博客在2017.3.2>>>详细阅读


      本文标题:JavaScript中this的运行机制及爬坑指南

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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