我可以这样做:
class Temp {
constructor() {
this.foo = 'foo'
this.bar = 'bar'
}
getObj() {
let boo = 'boo'
return {
boo
}
}
}
console.log(new Temp().getObj())
//prints { boo: 'boo' }
那我该怎么做:
class Temp {
constructor() {
this.foo = 'foo'
this.bar = 'bar'
}
getObj() {
return {
this.foo
}
}
}
console.log(new Temp().getObj())
是否有特殊语法或不支持?
答案 0 :(得分:1)
我想您真正寻找的是:
return { ...this };
或者如果您想省略一些属性:
const { bar, ...take } = this;
return take;
答案 1 :(得分:1)
否,尚不支持此功能。您将必须经过{foo: this.foo}
。
但是,有一个stage 1 proposal用于简化速记属性定义,使您可以将{this.foo}
编写为对象文字。
答案 2 :(得分:0)
如果要使用解构,则需要将属性提取为const,然后使用速记属性名称:
class Temp {
constructor() {
this.foo = 'foo'
this.bar = 'bar'
}
getObj() {
const { foo } = this;
return {
foo
}
}
}
console.log(new Temp().getObj())
答案 3 :(得分:0)
如果“ foo”是公共财产,则可以执行以下操作:
class Foo {
constructor() {
this.foo = 'foo';
}
}
const { foo } = (new Foo());
console.log(foo); // 'foo'