一段程序讓你看懂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,你只需這樣作:this

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();
相關文章
相關標籤/搜索