美文网首页
js是的this与箭头函数中的this

js是的this与箭头函数中的this

作者: 苦苦修行 | 来源:发表于2021-10-14 13:45 被阅读0次

请搭配 https://zhuanlan.zhihu.com/p/57204184 使用

以下内容改编自 https://www.cnblogs.com/jeodeng/p/10658590.html

// 先给window加一个id,以便于确认之后this的指向
window.id = 0;
// 声明一个函数fn
const fn = {
  id: 1,
  say: function() {
    console.log('id:', this.id);
  },
 // 1, fn调用say,this指向fn

  sayArrow: () => {
    console.log('id:', this.id);
  },
 // 0, 箭头函数虽然定义在fn中,但fn不是作用域,作用域是指函数内部,继续往外找,到了最外层window

  say1: function() {
    setTimeout(function() {
      console.log('id:', this.id);
    }, 1000);
  },
// 0, setTimeout传入的回调方法其实是在setTimeout中执行的,没有其它对象调用该回调方法,所以回调方法的this指向window

  say2: function() {
    let that = this;
    setTimeout(function() {
      console.log('id:', that.id);
    }, 1000);
  },
// 1, that指向fn,又把fn引用传进了setTimeout回调方法

  say3: function() {
    setTimeout(() => {
      console.log('id:', this.id);
    }, 1000);
  },
/**
1, setTimeout传入了一个匿名箭头函数,相当于
say3: function() {
  var temp = () => {
      console.log('id:', this.id);
    };
    setTimeout(temp, 1000);
  }
箭头函数的this指向它的作用域,箭头函数是在say3函数中定义的,say3的this指向调用它的fn
**/

  say4: () => {
    setTimeout(() => {
      console.log('id:', this.id);
    }, 1000);
  },
// 0, 基于上面的解释,say4是在fn中定义的,fn是对象,不是say4的作用域,所以继续往上,到达window

  say5: () => {
    setTimeout(function() {
      console.log('id:', this.id);
    }, 1000);
  },
};
// 0,解释等同于 say1

相关文章

  • js是的this与箭头函数中的this

    请搭配 https://zhuanlan.zhihu.com/p/57204184[https://zhuanla...

  • 箭头函数

    1,箭头函数定义 2,Es6 中箭头函数参数与返回值简写 补充 3,箭头函数中 this 指向 注:箭头函数中的t...

  • 6、【ES6】箭头函数

    1、 2、箭头函数中 this 预备知识:https://www.runoob.com/js/js-this.ht...

  • js箭头函数与this

    一句话概括就是: 箭头函数的this与创建时的封闭词法上下文的this保持一致。箭头函数的这种表现形式的本质是函数...

  • JS、Python对比学习

    条件运算符(三目) 遍历列表 JS中的箭头函数和Python中的lambda函数有点相似,以下的js、python...

  • ES6箭头函数简介

    @(JS技巧)[ES6|箭头函数] ES6箭头函数(Arrow Functions) ES6可以使用“箭头”(=>...

  • 常见前端面试题

    箭头函数与普通函数的区别 箭头函数语法比普通函数更加简洁,但箭头函数中没有arguments,所以形参可以使用展开...

  • 箭头函数与普通函数的区别

    箭头函数与普通函数的区别,实质是我们是否理解了箭头函数,在我刚开始接触ES6时,印象中的箭头函数与普通函数的区别就...

  • [译]JS箭头函数三连问:为何用、怎么用、何时用

    [译]JS箭头函数三连问:为何用、怎么用、何时用在现代JS中最让人期待的特性就是关于箭头函数,用=>来标识。箭头函...

  • js中函数和箭头函数

    定义函数的方式 (1)定义函数的方式:function (2)对象字面量中定义函数 (3)es6中的箭头函数 箭头...

网友评论

      本文标题:js是的this与箭头函数中的this

      本文链接:https://www.haomeiwen.com/subject/tqtuoltx.html