资讯专栏INFORMATION COLUMN

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

shiyang6017 / 520人阅读

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

看下面这段程序

</>复制代码

  1. var name = "Bob";
  2. var nameObj ={
  3. name : "Tom",
  4. showName : function(){
  5. console.log(this.name);
  6. },
  7. waitShowName : function(){
  8. setTimeout(this.showName, 1000);
  9. }
  10. };
  11. nameObj.waitShowName();//Bob
  12. nameObj.showName();//Tom

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

</>复制代码

  1. var name = "Bob";
  2. var nameObj ={
  3. name : "Tom",
  4. showName : function(){
  5. console.log(this.name);
  6. },
  7. waitShowName : function(){
  8. var that = this; //将this值保存。有些地方也将that写为self。
  9. setTimeout(function(){
  10. console.log(that.name);
  11. }, 1000);
  12. }
  13. };
  14. 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元查看
<