给定一个如下所示的 ES6 类,保留对传递给构造函数的数据的引用以便实例方法可以使用该数据的最佳方法是什么?
到目前为止,我发现的最好的方法是在构造函数中手动添加对每个实例属性的引用。有更清洁/更简单的方法吗?
class Test {
constructor( {
option1 = 1,
option2 = 2
} = {} ) {
// What's the best way to keep a reference to
// the options on the instance?
this.options = {
option1,
option2
};
}
addOptions() {
return this.options.option1 + this.options.option2;
}
}
let t = new Test({
option1: 5
});
console.log(t.addOptions()); // 7
这是 above code 的链接通过 6to5 运行。
最佳答案
ES6 不允许在类声明中声明原型(prototype)属性,这有点痛苦……但是,使用 getter 返回默认值可能适合您的情况。也许尝试这样的事情:
class Test {
get defaults() { return { option1: 1, option2: 2 }; }
constructor(parameters) {
this.options = Object.assign({}, this.defaults, parameters)
}
doSomething() {
return this.options.option1 + this.options.option2;
}
}
let test = new Test({
option1: 5
});
console.log(test.doSomething());
这是 above code running on 6to5 REPL 的链接.如果您想要一个合并默认值和继承的示例,请查看 constructor of this class .
关于javascript - 我应该如何在 ES6 实例中保留对 'options object' 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28477967/