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

2021-03-29 19:26

阅读:668

标签:保存   全局   console   article   默认   tom   his   var   UNC   

看下面这段程序

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

标签:保存   全局   console   article   默认   tom   his   var   UNC   

原文地址:https://www.cnblogs.com/baimeishaoxia/p/12603342.html


评论


亲,登录后才可以留言!