问题描述
我想用JS为自定义数据类型建模,并想知道是否还有更优雅的方法。
最终,我希望数据类型的行为本质上类似于数组,但是具有一组扩展的方法来满足我的特定应用程序,并且可以在下面的Links类中看到。
class Node {
constructor() {
this.links = new Links();
}
}
class Links {
constructor(node) {
this.data = [];
}
initialize() {
let initArray = [];
let maximumIncrement = hypotheticalNodeArray.length;
for (let i = 0; i < maximumIncrement ; i++) {
array[i] = 0;
}
this.data = array;
}
// More Methods Here
}
本质上,我的问题是,如果我尝试使用[node.links]访问链接数据,则会返回整个对象,就像我喜欢的那样,它只是返回data属性,就像用[node.links.data]。
我知道,只需添加额外的属性并不是世界末日,但如果对象的行为类似于数组(除了扩展的方法集之外),我真的很喜欢它。
我不确定这是否可行,并且我很欣赏它过于繁琐,但是它确实可以清除我正在处理的代码。
解决方法
您可以定义一个返回内部数组的getter:
class Node {
constructor() {
// renamed “_links” because we want the getter named “links”
this._links = new Links();
}
get links () {
return this._links.data;
}
}
const node = new Node();
node.links.map( ... ) // node.links is node._links.data