使用 JS Class Setter & getter 和内联函数
Using JS Class Setter & getter along with inline functions
我目前正在尝试设置一个 class,其中 属性 是另一个对象的数组(由另一个 class 定义)。
我正在使用 set/get 来管理值。我也在构造函数中初始化它们。
我想要实现的是向同一个 属性 添加内联函数,使整体生活更轻松。但是,我觉得我在这里使用了错误的方法。
class _MainObject {
constructor(){
this._property = [];
this.property= {
add(value, index){
if (value.constructor.name !== '_SubObject'){
return;
}
this._property.splice(index, 0, value);
},
remove(value){
if (value.constructor.name !== '_SubObject'){
return;
}
const index = this._property.findIndex((pId) => pId === value.id);
this._property.splice(index, 1);
}
};
}
set property(value){
if (Array.isArray(value)){
value.map((el) => {
if (el.constructor.name !== '_SubObject') return;
});
this._property = value;
}
//Tried a bunch of stuff here to assign the default object from above on the first initialization.
}
get property(){
return this._property;
}
}
每当构造函数初始化 属性 时,它都会触发“设置”并且不会将函数分配给 'property' 本身。
我想要 obj._property 中的实际数据,但通过调用 obj.property 获取。我还希望能够调用 obj.property.add().
这在某种程度上一定是可行的,我只是不知道怎么做。
理想情况下,我想使用 ES5+ 语义。
在此先感谢您提供的任何帮助。
class Property {
constructor(){
this.value = [1,2,3];
}
add(x){
this.value = [...this.value, x]
}
}
class _MainObject {
constructor(){
this._property = new Property();
}
set property(value){
if (Array.isArray(value)){
this._property = value;
}
}
get property(){
return this._property;
}
}
const a = new _MainObject()
console.log(a.property)
a.property.add(4)
console.log(a.property)
您需要将 属性 包装到它自己的 class 中。
这是执行此操作的唯一方法,因为您不能拥有同名的 getter 和函数或 属性,如下所述:
Can JS have getters and setters methods named same as property?
Function and variable with the same name
我目前正在尝试设置一个 class,其中 属性 是另一个对象的数组(由另一个 class 定义)。
我正在使用 set/get 来管理值。我也在构造函数中初始化它们。
我想要实现的是向同一个 属性 添加内联函数,使整体生活更轻松。但是,我觉得我在这里使用了错误的方法。
class _MainObject {
constructor(){
this._property = [];
this.property= {
add(value, index){
if (value.constructor.name !== '_SubObject'){
return;
}
this._property.splice(index, 0, value);
},
remove(value){
if (value.constructor.name !== '_SubObject'){
return;
}
const index = this._property.findIndex((pId) => pId === value.id);
this._property.splice(index, 1);
}
};
}
set property(value){
if (Array.isArray(value)){
value.map((el) => {
if (el.constructor.name !== '_SubObject') return;
});
this._property = value;
}
//Tried a bunch of stuff here to assign the default object from above on the first initialization.
}
get property(){
return this._property;
}
}
每当构造函数初始化 属性 时,它都会触发“设置”并且不会将函数分配给 'property' 本身。
我想要 obj._property 中的实际数据,但通过调用 obj.property 获取。我还希望能够调用 obj.property.add().
这在某种程度上一定是可行的,我只是不知道怎么做。
理想情况下,我想使用 ES5+ 语义。
在此先感谢您提供的任何帮助。
class Property {
constructor(){
this.value = [1,2,3];
}
add(x){
this.value = [...this.value, x]
}
}
class _MainObject {
constructor(){
this._property = new Property();
}
set property(value){
if (Array.isArray(value)){
this._property = value;
}
}
get property(){
return this._property;
}
}
const a = new _MainObject()
console.log(a.property)
a.property.add(4)
console.log(a.property)
您需要将 属性 包装到它自己的 class 中。
这是执行此操作的唯一方法,因为您不能拥有同名的 getter 和函数或 属性,如下所述:
Can JS have getters and setters methods named same as property?
Function and variable with the same name