我正在玩解构:
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()
如果可能的话,在一行代码中!
提前感谢您的帮助。
答案 0 :(得分:5)
您可以将create
返回值包装在临时外部对象中,然后通过外部对象的属性名称访问原始对象。这仍然允许您从原始对象中提取属性。
const {me:{a}, me} = {me:create()}
这将使用对象中的属性a
创建变量a
,并创建保存整个对象的变量me
。
或者,从外部对象命名除属性名称以外的内容(例如,foo
而不是me
):
const {me:{a}, me:foo} = {me:create()}
这仍然需要创建一个额外的属性,但该属性存在于即时设置的包装器对象上。这可以完全在create
外部完成,因此您无需触及create
函数的操作过程,只是为了使其对结构友好。