为什么箭头函数不会出现四递归调用的问题?
来源:3-10 Vue的组件之高级属性

qq_缺南摸了个北_0
2019-02-15
const obj = {}
//
Object.defineProperty(obj, 'value', {
get: () => {
return this.value
},
set: (val) => {
this.value = val
}
})
obj.value = '李四'
console.log(obj.value)
正确输出:
李四
使用 Function
Object.defineProperty(obj, 'test', {
get: function () {
return this.test
},
set: function (val) {
this.test = val
}
})
obj.test = 'functional'
结果:
Maximum call stack size exceeded
写回答
1回答
-
李英奇
2019-02-17
this是什么?
预编译阶段:当一个函数被调用时,会创建一个活动记录(执行上下文),这个记录里面有调用位置,调用栈,传入的参数和一些标识符,this就是这些记录里面的一个属性;
箭头函数this指向根据外层的函数或者全局作用域来决定this;
第一个例子this指向window,
第二个例子this指向 obj对象,导致重复调用set方法
222019-02-17
相似问题