我有一個類,我想在其中包含一個方法來覆寫建構式中的一些默認實體變數,而不需要十幾個引數。我想通過以下形式傳遞一個物件來做到這一點:
class MyClass {
constructor(overrides) {
this.instanceVar1 = default1;
this.instanceVar2 = default2,
for (key in overrides) {
this.key = overrides[key];
}
}
let overrides = {instanceVar1 : value,
instanceVar2 : value2};
let instance = new MyClass(overrides);
console.log(instance.instanceVar1) // Outputs value, not default1.
在 Python 中,這可以通過
if overrides is not None:
for key, value in overrides.items():
self.setattr(self, key, value)
是否有等效的 JS 或者我只需要添加一堆具有默認值的引數?
uj5u.com熱心網友回復:
對于您給定的示例,您只需使用括號表示法來訪問變數中的屬性。
class MyClass {
constructor(overrides) {
this.instanceVar1 = 'default1';
this.instanceVar2 = 'default2';
for (const key in overrides) {
this[key] = overrides[key];
// ^^^
}
}
}
let overrides = {
instanceVar1: 'value',
instanceVar2: 'value2'
}
let instance = new MyClass(overrides);
console.log(instance.instanceVar1); // value
另一種方法是從物件中解構所需的引數,overrides設定適當的默認值,并將其留在...rest其他地方使用。
class MyClass {
constructor({
instanceVar1 = 'default1',
instanceVar2 = 'default2',
...overrides
}) {
this.instanceVar1 = instanceVar1;
this.instanceVar2 = instanceVar2;
console.log(overrides); // { extraVar1: 'another value' }
}
}
let overrides = {
instanceVar1: 'value',
instanceVar2: 'value2',
extraVar1: 'another value'
}
let instance = new MyClass(overrides);
console.log(instance.instanceVar1); // value
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486114.html
標籤:javascript 班级 属性 实例变量
