解构时的参考对象

时间:2017-07-05 17:38:09

标签: javascript

我正在玩解构:

function create(){
 let obj={a:1,b:2}
obj.self=obj
 return obj
}
const {a,self} = create()

有没有办法在不添加这样的属性的情况下获取自身对象?

function create(){
 let obj={a:1,b:2}
// removes   obj.self=obj
 return obj
}
const {a,this} = create()

如果可能的话,在一行代码中!

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

您可以将create返回值包装在临时外部对象中,然后通过外部对象的属性名称访问原始对象。这仍然允许您从原始对象中提取属性。

const {me:{a}, me} = {me:create()}

这将使用对象中的属性a创建变量a,并创建保存整个对象的变量me

或者,从外部对象命名除属性名称以外的内容(例如,foo而不是me):

const {me:{a}, me:foo} = {me:create()}

这仍然需要创建一个额外的属性,但该属性存在于即时设置的包装器对象上。这可以完全在create外部完成,因此您无需触及create函数的操作过程,只是为了使其对结构友好。