如何在使用解构赋值时保留对象范围?

时间:2017-05-18 18:49:38

标签: 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()在解构时访问其兄弟姐妹的属性/方法?

1 个答案:

答案 0 :(得分:0)

@ dayan-moreno-leon发布了一个不错的选择。

但我只是注意到我只需使用始终静态调用即可处理:

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'