一段程序让你看懂JS中的this

Posted baimeishaoxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一段程序让你看懂JS中的this相关的知识,希望对你有一定的参考价值。

看下面这段程序

var name = "Bob";  
  var nameObj ={  
      name : "Tom",  
      showName : function(){  
          console.log(this.name);  
      },  
      waitShowName : function(){  
          setTimeout(this.showName, 1000);  
      }  
 };  
nameObj.waitShowName();//Bob
nameObj.showName();//Tom

setTimeout函数的默认定义域是全局的,this代指调用他的那个对象,showName()函数是个调用对象为nameObj,故输出了Tom。若要让waitShowName输出Tom,你只需这样做:

    var name = "Bob";  
  var nameObj ={  
      name : "Tom",  
      showName : function(){  
          console.log(this.name);  
      },  

      waitShowName : function(){ 
      var that = this; //将this值保存。有些地方也将that写为self。
          setTimeout(function(){
              console.log(that.name);
          }, 1000);  
      }  
 };  
 
nameObj.waitShowName();

以上是关于一段程序让你看懂JS中的this的主要内容,如果未能解决你的问题,请参考以下文章

剖析执行时(让你看懂执行时)

一张图让你看懂 Vi / Vim 神操作

[转帖]几张图让你看懂WebAssembly

一篇文让你看懂NB-IoTLoRaeMTCSigfox及ZigBee的应用场景

一张图让你看懂敏捷Scrum

三个例子,让你看懂数据仓库多维数据模型的设计