将带有预定义道具的对象传递给类构造函数es6

时间:2016-02-27 20:49:23

标签: javascript ecmascript-6 babeljs

我正在尝试将具有预定义属性的对象传递给我的类构造函数。

像这样

class Test {

constructor({
    a = "test a",
    b = "test b"
    }) {

    }
}

P.S。我知道如何定义对象的属性。我想知道如何预定义属性。

3 个答案:

答案 0 :(得分:5)

似乎您希望将一个对象传递给构造函数,并将其属性分配给该类的单个键。您可以这样使用解构:

class MyClass {
  constructor({a,b} = {a:1,b:2}) {
    this.a = a;
    this.b = b;
  }
}

请注意,这对部分填充的物体不安全:

var instance = new MyClass({a:3});
// instance.b == undefined

可以这样处理:

class MyClass {
  constructor({a=1,b=2} = {}) {
    this.a = a;
    this.b = b;
  }
}

结果是:

var instance = new MyClass({a:3});
// instance.a == 3
// instance.b == 2

答案 1 :(得分:0)

正如我在评论中所说,documentation顶部有一个例子。

class Test {
    constructor(/* put arguments here if you want to pass any */){
        //Pre-define a and b for any new instance of class Test
        this.a = "test a";
        this.b = "test b";
    }
}

答案 2 :(得分:0)

简单的解决方案是在实例化期间传递构造函数和对象:

class Test {
  constructor(obj){
      this.a = obj.a;
      this.b = obj.b;
     }
  };

const obj = {
 a: 'value',
 b: 'value'
};

const newtTest = new Test(obj);