解构时的参考对象

Alp*_*age 5 javascript

我正在玩解构:

function create(){
 let obj={a:1,b:2}
obj.self=obj
 return obj
}
const {a,self} = create()
Run Code Online (Sandbox Code Playgroud)

有没有办法获得自我对象而不添加这样的属性?

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

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

预先感谢您的帮助.

aps*_*ers 5

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

const {me:{a}, me} = {me:create()}
Run Code Online (Sandbox Code Playgroud)

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

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

const {me:{a}, me:foo} = {me:create()}
Run Code Online (Sandbox Code Playgroud)

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