是否可以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每日一题