你的位置:首页 > 软件开发 > Java > javaScript this理解

javaScript this理解

发布时间:2016-03-25 10:00:20
之前学javascript的时候总搞不清this,这个this不像java里的this那么好理解。我后来也是看了许多别人写的文章,才理解过来的。现在把别人写的东西搬过来,怕以后忘记。总得来说 this的指向分三种。指向全局window,该对象,构造函数。 结论:在Javasc ...

之前学javascript的时候总搞不清this,这个this不像java里的this那么好理解。我后来也是看了许多别人写的文章,才理解过来的。现在把别人写的东西搬过来,怕以后忘记。

总得来说 this的指向分三种。指向全局window,该对象,构造函数。 

结论:Javascript中,this指向函数执行时的当前对象。  简单点说就是调用的方法属于哪个对象,this就指向那个对象。

 

1.   全局window

简单代码

    var message = "this in window";    var printMessage = function(){      console.info(this === window);      console.info(this.message);    };    printMessage();
    var message = "this in window";    var printMessage = function(){      console.info(this === window);      console.info(this.message);    };    var obj = {      message: 'this in obj',      printMsg : function(){        printMessage();      }    };    obj.printMessage();
javaScript this理解

          此时printMessage方法是属于window的,所以他的this还是指向window。obj.printMessage 方法是属于obj对象的,看看下面的分析。

          所以输出结果还是为:true   this in window

           

 

 2.  该对象

现在看看该对象的,稍微改一下代码

javaScript this理解
    var message = "this in window";    var printMessage = function(){      console.info(this === window);      console.info(this.message);    };    var obj = {      message: 'this in obj',      printMessage : function(){        var obj2 = {          message:'this in obj2',          printMessage: window.printMessage        };        obj2.printMessage();      }    };    obj.printMessage();
javaScript this理解

 最终调用的是 obj2.printMessage(),所以执行到this的时候,那个this是obj2

结果:

     false,this in obj2

  哈哈,是不是和你想的一样,谁调用的,就指向谁。

3. 构造函数

javaScript this理解

原标题:javaScript this理解

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。