我正在尝试为对象中的某些属性覆盖set
方法。
class MyClass extends Element {
set locations(markers) {
//setter implementation
}
}
设置整个数组时正确:
obj.locations = ['location1', 'location2'];
我想公开一个locations
可以通过以下方式直观设置的API:
obj.locations.push('location3');
但是它甚至没有通过setter实现。
我在做什么错了?
答案 0 :(得分:3)
您的push
行未调用设置程序。您没有分配数组,而是试图对其进行突变。为此,您需要定义 getter 。
这是一个简化的示例:
class MyClass {
set locations(markers) {
this._locations = markers;
}
get locations() {
return this._locations; // Make sure to return an array instance
}
}
var elem = new MyClass;
elem.locations = [];
elem.locations.push("test");
console.log(elem.locations);
如果您无法返回直接链接到实例状态的数组,那么让getter返回一个实现自身push
以及您希望其公开的其他方法的对象。