Javascript 类属性(Object.assign)的Setter/getter?

Javascript 类属性(Object.assign)的Setter/getter?,javascript,ecmascript-6,Javascript,Ecmascript 6,我试图成为类属性上的一个设置程序: class Example { prop = { default: 'default', color: 'red' }; set prop(value) { // this.prop will be undefined as the setter overrides the class property) Object.assign(this.prop, value); } } const myExa

我试图成为类属性上的一个设置程序:

class Example {
    prop = { default: 'default', color: 'red' };

    set prop(value) {
        // this.prop will be undefined as the setter overrides the class property)
        Object.assign(this.prop, value);
    }
}

const myExample = Example();
myExample.prop.default = 'new';

// Trying to get prop = { default: 'new', color: 'red' }

setter将覆盖prop,我相信,如何指定默认对象值?我是否应该像_prop一样存储类属性prop?

我将在构造函数中手动定义访问器:

类示例{
构造函数(){
var prop={default:'default',color:'red'};
Object.defineProperty(这个“prop”{
get(){return prop;},
设置(值){Object.assign(prop,value);}
});
}
}
const myExample=新示例();
console.log(myExample.prop);
myExample.prop={foo:“bar”};

console.log(myExample.prop)我将在构造函数中手动定义访问器:

类示例{
构造函数(){
var prop={default:'default',color:'red'};
Object.defineProperty(这个“prop”{
get(){return prop;},
设置(值){Object.assign(prop,value);}
});
}
}
const myExample=新示例();
console.log(myExample.prop);
myExample.prop={foo:“bar”};


console.log(myExample.prop)添加相应的getter并将其存储在具有不同名称的属性中。@zerkms谢谢,我刚刚用该解决方案编辑了我的问题:)有没有更干净的方法来执行此操作,或者这是正确的方法?我一直在阅读Object.defineProperty,但不知道这是否是正确的解决方案。类只允许方法定义。不是数据属性。@oriol您的意思是类不允许属性?如果您使用的是es和babel,则会发生这种情况。@JohnSmith我认为他们指的是它尚未标准化的事实。添加相应的getter并将其存储在具有不同名称的属性中。@zerkms谢谢,我刚刚用该解决方案编辑了我的问题:)有没有更干净的方法来实现这一点,或者这是正确的方法?我一直在阅读Object.defineProperty,但不知道这是否是正确的解决方案。类只允许方法定义。不是数据属性。@oriol您的意思是类不允许属性?如果您使用的是es和babel,则会发生这种情况。@JohnSmith我认为他们指的是它尚未标准化的事实。与使用类属性相比,这种方法的优势是什么?我真的不喜欢在构造函数中放太多东西。@JohnSmith,因为您必须将数据存储在某个地方,而类定义只允许方法定义,不允许数据属性。但是你可以把访问器移到构造函数之外。好吧,但是试着理解一下,我正在为这个项目使用类属性,我不会因为某些东西还没有标准化而切换所有东西。这种方法的优点是什么?@JohnSmith是什么让你认为它最终会成为标准的?@JohnSmith Babel在构造函数中移动赋值。与使用类属性相比,这种方法的优点是什么?我真的不喜欢在构造函数中放太多东西。@JohnSmith,因为您必须将数据存储在某个地方,而类定义只允许方法定义,不允许数据属性。但是你可以把访问器移到构造函数之外。好吧,但是试着理解一下,我正在为这个项目使用类属性,我不会因为某些东西还没有标准化而切换所有东西。这种方法的优点是什么?@JohnSmith是什么让你认为它最终会成为标准的?@JohnSmith Babel在构造函数中移动赋值。