作家
登录

换个思路理解Javascript中的this

作者: 来源: 2017-07-27 09:43:11 阅读 我要评论

    func.call(context); 
  •     return context; 
  • function Foo(){ 
  •     this.x = 1; 
  •     this.getX = function(){ 
  •         console.log(this.x); 
  •     } 
  • var foo = newMethod(Foo); 
  • foo.getX(); 
    1. DOMElement.addEventListener('click'function(){ 
    2.  
    3.   console.log(this); 
    4.  
    5. });  

    把函数绑定到DOM事宜时,可以算作在DOM上增长一个函数办法,当触发这个事宜时调用DOM上对应的事宜办法。

    1. DOMElement.clickHandle = function(){ 
    2.     console.log(this); 
    3. DOMElement.clickHandle(); 

    通俗函数中的this

    下面我们把其他函数的调用方法都按调用对象办法的思路来转换。

    这种情况下,我们创建一个虚拟高低文对象,然后通俗函数作为这个虚拟高低文对象的办法调用,此时通俗函数中的this就指向了这个虚拟高低文。

    那这个虚拟高低文是什么呢?在非严格模式下是全局高低文,浏览器里是 window ,NodeJs里是 Global ;在严格模式下是 undefined 。

    1. var x = 1; 
    2. function getX(){ 
    3.     console.log(this.x); 
    4.  
    5. [viturl context].getX = getX; 
    6. [viturl context].getX(); 

    闭包中的this

    this 地点的函数 foo 是个通俗函数,我们创建一个虚拟高低文对象,然后通俗函数作为这个虚拟高低文对象的办法急速调用。是以这个 this指向了这个虚拟高低文。在非严格模式下是全局高低文,浏览器里是 window ,NodeJs里是 Global ;在严格模式下是 undefined 。

    1. var x = 1; 
    2. var foo = { 
    3.     x: 2, 
    4.     y: 3, 
    5.     getXY: function(){ 
    6.         (function(){ 
    7.             console.log("x:" + this.x); 
    8.             console.log("y:" + this.y);  
    9.         })(); 
    10.     } 
    11. foo.getXY();  

    这段代码的高低文如下图:

    这里须要留意的是,我们再研究函数中的 this 指向时,只须要存眷 this 地点的函数是若何调用的, this 地点函数外的函数调用都是浮云,是不须要存眷的。是以在所有的图示中,我们只须要存眷红色框中的内容。


      推荐阅读

      检察改革的“贵州答卷”——“智慧检务”

    改革大年夜潮,风生水起;蹄疾步稳,行精细远。2014年12月,贵州省作为全国首批司法体系体例改革试点省份之一,率先拉开司改大年夜幕。三年多来,贵州省审查院紧紧抓住完美司法义务制这个&>>>详细阅读


    本文标题:换个思路理解Javascript中的this

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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