匿名函数没有自己的this

匿名函数没有自己的this,因此,在构造对象中调用全局函数时,可以省去保存临时this,再将其传入全局函数这一步:

1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <title>匿名函数的this</title>
 7 </head>
 8 <body>
 9   <script>
10     const Tom = {
11       name:'Tom',
12       age:null,
13       setAge: function () {
14         let _this = this; // 将Tom保存在_this变量里
15         setTimeout(function(){
16           // 因为是在全局函数里,所以这里的this是window
17           console.log(this);  // 输出:window {parent: Window, opener: null, top: Window, length: 0, frames: Window, …}
18           //  这里的_this才是Tom,所以用_this才能调用Tom的age属性
19           _this.age = 15;
20           console.log(_this) // 输出: {name: "Tom", age: 15, setAge: ƒ}
21         }, 1000);
22       }
23     };
24
25     Tom.setAge();
26     setTimeout(() => {
27       console.log(Tom.age);
28     }, 3000);
29
30     const Rose = {
31       name: 'Rose',
32       age: null,
33       setAge: function () {
34         setTimeout(() => { // 匿名函数没有this,因此匿名函数中的this是他所在函数的上一层,setTimeout()的上层是Rose
35                             // 因此这里的this是Rose,可以调用Rose
36           this.age = 16;
37           console.log(this); // 输出:{name: "Rose", age: 16, setAge: ƒ}
38         }, 1000);
39       }
40     };
41
42     Rose.setAge();
43     setTimeout(() => {
44       console.log(Rose.age);
45     }, 3000);
46   </script>
47 </body>
48 </html>

输出:

(0)

相关推荐

  • ES6 常用特性总结

    一.ES6 基本认识 1.什么是 ES6? ES6 指的是 ECMAScript 6.0,是JavaScript 语言的一个标准.其目标是使JavaScript 可以用来编写复杂的大型的应用程序,成为 ...

  • 1.变量:var,let,const

    var在ECMAScript的所有版本中都可以使用,而const和let只能在ES6及更晚的版本中使用. var,let,const三个关键字的区别 var: 1)声明作用域:在函数内部,使用var定 ...

  • Power Query里的匿名函数是什么鬼?这个例子最典型了。

    小勤:我现在有个按营业额不同等级的提成比例表,怎么用Power Query读到营业额数据表里?如下图所示: 大海:这个问题如果是在Excel里的话,用Lookup函数非常简单. 小勤:这我知道啊,但我 ...

  • 在PHP中如何为匿名函数指定this?

    在PHP中如何为匿名函数指定this? 在之前的文章中,我们已经学习过匿名函数的使用,没有看过的小伙伴可以进入传送门先去了解下闭包匿名函数的用法,传送:还不知道PHP有闭包?那你真OUT了. 关于闭包 ...

  • [PHP小课堂]在PHP中如何为匿名函数指定this?

    [PHP小课堂]在PHP中如何为匿名函数指定this? 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[xiaoyuezigonggong/149844827]免费得PHP.项目管理学 ...

  • Python中的匿名函数

    原创 DBA随笔 DBA随笔 1周前 // Python中的匿名函数 // 写python的时候,大多数场景下,我都是if else选手,因为最核心的逻辑几乎都是通过if else语句来实现的.关于匿 ...

  • JS自执行函数,匿名函数

    自执行函数 先来看个最简单的自执行函数 (function(){ }()); 相当于声明并调用 var b=function () { }b() 自执行函数也可以有名字 function b(){ . ...

  • JS匿名函数和闭包

    $(function() {}) 是$(document).ready(function()的简写, 这个函数什么时候执行的呢? 答案:DOM 加载完毕之后执行. 立即执行函数(function(){ ...

  • 匿名函数

    匿名函数 如何定义 在python里面,我们用def来定义一个函数,比如: def double(x): return 2*x 除了以上的凡是定义函数,Python还支持了另一种函数的定义法,lamb ...

  • 初中数学反比例函数闯关难题,建议收藏!

    i初中数学 公众号 初中数学反比例函数闯关难题 i初中数学 爱 · 初中数学,是一个由数学名师团发起的公众号,旨在为初中生提供数学同步知识学习,同步习题训练,期中期末知识要点总结,期中期末模拟试卷测评 ...

  • 函数考点全突破(十三)二次函数问题中四边形面积最值问题

    春熙初中数学 25篇原创内容 公众号 初中数学解题思路 本号致力于初中数学学习的钻研和探索.全面覆盖初中数学典型题集.解题模型.动点最值.思路方法.超级易错.几何辅助线.压轴破解等方面,欢迎关注! 1 ...