我需要在一个类中创建一个数组和一个add函数。 add函数将在数组中推送一些对象。有一种使用原型的方法,但是是否可以通过其他方法实现,最好在类内部定义数组(我猜这是不可能的)?
//This works
class Parser {
addOption(name, isReq, type, cantBeUsedWith) {
this.options.push({
name: name,
isReq: isReq,
type: type,
cantBeUsedWith: cantBeUsedWith
});
}
}
Parser.prototype.options = [];
//Need to do something like
class Parser {
var options = [];
addOption(name, isReq, type, cantBeUsedWith) {
this.options.push({
name: name,
isReq: isReq,
type: type,
cantBeUsedWith: cantBeUsedWith
});
}
}
答案 0 :(得分:0)
您可以在类的构造函数中创建一个数组:
class Parser {
constructor() {
this.options = [];
}
addOption(name, isReq, type, cantBeUsedWith) {
this.options.push({
name: name,
isReq: isReq,
type: type,
cantBeUsedWith: cantBeUsedWith
});
}
}
顺便说一句,您设置Parser.prototype.options的版本将为该类创建一个数组,而不是为每个实例创建一个数组。这可能不是您想要的。进行this.options.push
会使该单个数组发生变异,因此该类的每个实例都会看到该变异。
class Example {
addOption() {
this.options.push('hello world');
}
}
Example.prototype.options = [];
const a = new Example();
const b = new Example();
a.addOption();
console.log(b.options); // I never touched b, and yet its options changed
答案 1 :(得分:0)
如果要查找类级别的(而不是对象级别的)属性,当前没有此类选项。有proposal-static-class-features
,通过添加公共和私有静态方法来解决此问题。
如果要添加对象级别的属性,只需在构造器中将其初始化:
table()