资讯专栏INFORMATION COLUMN

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

shiyang6017 / 447人阅读

摘要:看下面这段程序函数的默认定义域是全局的,代指调用他的那个对象函数是个调用对象为,故输出了。若要让输出,你只需这样做将值保存。有些地方也将写为。

看下面这段程序

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();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/111587.html

相关文章

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

    摘要:看下面这段程序函数的默认定义域是全局的,代指调用他的那个对象函数是个调用对象为,故输出了。若要让输出,你只需这样做将值保存。有些地方也将写为。 看下面这段程序 var name = Bob; var nameObj ={ name : Tom, showName : function(){ console.log(this...

    xiaokai 评论0 收藏0
  • 一段程序让你看懂JS中的this

    摘要:看下面这段程序函数的默认定义域是全局的,代指调用他的那个对象函数是个调用对象为,故输出了。若要让输出,你只需这样做将值保存。有些地方也将写为。 看下面这段程序 var name = Bob; var nameObj ={ name : Tom, showName : function(){ console.log(this...

    yuxue 评论0 收藏0
  • 一个函数让你看懂 'Why 0.1+0.2!=0.3'

    摘要:的二进制科学计数法第位是,所以就有了下面的结果有着同样的问题,其实正是由于这样的存储,在这里有了精度丢失,导致了。最大安全数字中表示最大安全数字计算结果是,即在这个数范围内不会出现精度丢失小数除外这个数实际上是。是一个任意精度的整数。 话不多说,先上代码 function judgeFloat(n, m) { const binaryN = n.toString(2...

    mushang 评论0 收藏0

发表评论

0条评论

shiyang6017

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<