Javascript 如何在使用分解分配时保留对象范围?
考虑以下代码:Javascript 如何在使用分解分配时保留对象范围?,javascript,ecmascript-6,Javascript,Ecmascript 6,考虑以下代码: const obj = { a: 'foo', b: function () { return this.a } } console.log(obj.a) // 'foo' console.log(obj.b()) // 'foo' const { a, b } = obj console.log(a) // 'foo' console.log(b()) // undefined 当我销毁obj时,b()无法再访问a 我怎样才能保留obj的作用域,并允许b
const obj = {
a: 'foo',
b: function () { return this.a }
}
console.log(obj.a) // 'foo'
console.log(obj.b()) // 'foo'
const { a, b } = obj
console.log(a) // 'foo'
console.log(b()) // undefined
当我销毁obj
时,b()
无法再访问a
我怎样才能保留obj的作用域,并允许
b()
在描述时访问它的兄弟属性/方法?@dayan moreno leon给出了一个很好的选择
但我刚刚注意到,我可以简单地通过始终使用静态调用来处理:
可能的副本你有机会经历这一切。设计前
obj.b=ob.b.bind(obj)代码>与其说是解构,不如说是调用上下文。你可以试试b.call(obj)
const obj = {
a: 'foo',
b: function () { return obj.a } //HERE! :D
}
const { a, b } = obj
console.log(obj.a) // 'foo'
console.log(obj.b()) // 'foo'
console.log(a) // 'foo'
console.log(b()) // 'foo'