美文网首页深入JavaScript
深入JavaScript Day05 - 箭头函数不绑定this

深入JavaScript Day05 - 箭头函数不绑定this

作者: 望穿秋水小作坊 | 来源:发表于2022-01-13 11:09 被阅读0次

1、var that = this这样的代码在老一些代码中经常见到,现在可以被什么替代了?

  • 抓住箭头函数不绑定this,并且会去上层作用域中【找this指向】的特性。
  • 所以我们用箭头函数,替代了 var that = this 这种不太优雅的写法。

2、误区矫正:大括号不是块级作用域,也可能是在定义对象!!!

var obj = {
  name: "obj",
  foo: () => {
    // obj的大括号只是定义对象,不要认为是一个作用域
    // 所以这个函数的上层作用域是全局
    console.log(this);
  },
};

obj.foo();

function Student() {
  this.foo = () => {
    // 这个函数的上级作用域就是Student的大括号了
    console.log(this);
  };
}

var stu = new Student();
stu.foo();

3、依然会错的面试题

  • 面试题三
var name = "window";
function Person(name) {
  this.name = name;
  this.foo1 = function () {
    console.log(this.name);
  };
  this.foo2 = () => console.log(this.name);
  this.foo3 = function () {
    return function () {
      console.log(this.name);
    };
  };
  this.foo4 = function () {
    return () => {
      console.log(this.name);
    };
  };
}
var person1 = new Person('person1')
var person2 = new Person('person2')

person1.foo1()
person1.foo1.call(person2)

person1.foo2()
person1.foo2.call(person2)

person1.foo3()()
person1.foo3.call(person2)()
person1.foo3().call(person2)

person1.foo4()()
person1.foo4.call(person2)()
person1.foo4().call(person2)

相关文章

  • 深入JavaScript Day05 - 箭头函数不绑定this

    1、var that = this这样的代码在老一些代码中经常见到,现在可以被什么替代了? 抓住箭头函数不绑定th...

  • 深入理解ES6中的箭头函数

    JavaScript深入理解ES6中的箭头函数 箭头函数表达式的语法比函数表达式短,并且不绑定自己的 this,a...

  • es6

    箭头函数与普通函数的区别 箭头函数是匿名函数,不能作为构造函数,不能使用new 箭头函数不绑定arguments,...

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

    箭头函数作为匿名函数,是不能作为构造函数的,不能使用new 箭头函数没有原型属性 箭头函数不绑定arguments...

  • ES6箭头函数的特性

    箭头函数是匿名函数,不绑定自己的this,arguments,super,new.target 箭头函数会捕获其所...

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

    箭头函数: 普通函数: 一、二者区别 1.箭头函数是匿名函数,不能作为构造函数,不能使用new 2.箭头函数不绑定...

  • React事件绑定

    1、在构造函数内使用bind绑定this 2、箭头函数绑定this 3、使用bind()绑定this 4、使用箭头...

  • 前端面试必会面试题

    1、箭头函数和普通函数的区别 1.箭头函数是匿名函数,不能作为构造函数,不能使用new 2.箭头函数不绑定argu...

  • ES6经典面试题

    1.箭头函数有哪些特性 1、箭头函数是匿名函数,不绑定自己的this,arguments,super,new.ta...

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

    1.箭头函数是匿名函数,不能作为构造函数,不能使用new 2.箭头函数不绑定arguments(实参),取而代之用...

网友评论

    本文标题:深入JavaScript Day05 - 箭头函数不绑定this

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