箭头函数小问题

44 阅读1分钟

是否可以new一个箭头函数

new操作符的实现步骤

  • 创建一个对象
  • 将构造函数的作用域赋值给新对象(也就是将对象的_proto_属性指向构造函数的prototype属性)
  • 指向构造函数中的代码,构造函数中的this指向该对象(即为对象添加属性和方法)
  • 返回新的对象

箭头函数

  • 箭头函数是ES6新提出来的,没有prototype也没有自己的this指向,更不能使用arguments参数,所以不能New一个箭头函数

箭头函数的this指向

  • 箭头函数不同于传统的JavaScript中的函数,箭头函数并没有属于自己的this,它所谓的this是捕获其所在上下文的this值,所以是不会被new调用的,所谓的this也不会发生改变
const obj = {
    getArrow() {
        return () => {
            console.log(this===obj)
        }
    }
}
obj.getArrow()() //true
  • 上述代码由babel转换后,可演变为
const obj = {
    getArrow: function() {
        var _this = this
        return function() {
            console.log(this === obj)
        }
    }
}

---------------------------------------------------------------------------------------------2024.4.28每日一题