必须将空对象作为参数ES6传递

时间:2016-08-17 11:05:16

标签: javascript ecmascript-6

如果我创建一个具有默认值的类 -

class SomeClass {
    constructor({
        a = 0.00,
        b = 0.00,
        c = 14.00,
        d = 'xyz'
    }){
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;

    }
}

我必须在创建实例时传递一个空对象。

var sc = new SomeClass({});

如果我想在对象参数中设置默认值,或者我可以在构造函数中更改某些内容以便我可以执行此操作var sc = new SomeClass();来创建我的对象,这是正常的吗?

3 个答案:

答案 0 :(得分:4)

设置默认值:

class SomeClass {
  constructor({
      a = 0.00,
      b = 0.00,
      c = 14.00,
      d = 'xyz'
  } = {}) { // <=
    this.a = a;
    this.b = b;
    this.c = c;
    this.d = d;
  }
}

答案 1 :(得分:2)

此语法适用于我的Chrome:

class Test {
    constructor({a = 5} = {a: 6}) {
        console.log(a);
    }
}

new Test(); // 6

答案 2 :(得分:1)

&#13;
&#13;
class SomeClass {
  constructor(optionsArg) {
    if (optionsArg === undefined) {
      optionsArg = {};
    }
    this.a = 'a' in optionsArg ? optionsArg.a : 0.00;
    this.b = 'b' in optionsArg ? optionsArg.b : 0.00;
    this.c = 'c' in optionsArg ? optionsArg.c : 14.00;
    this.d = 'd' in optionsArg ? optionsArg.d : 'xyz';
  }
}


var sc = new SomeClass({});
Object.keys(sc).forEach(function(prop){
console.log(prop, sc[prop]);
});
&#13;
&#13;
&#13;