javascript类实例对象文字

时间:2018-02-07 22:15:46

标签: javascript class object-literal shorthand

有没有简单的方法在javascript中为类的实例添加属性?

编辑:重复的答案是关于向对象添加属性而不是类。我试图让用户轻松添加大约10-20个属性。我也试图确保他们不能添加自己的属性,但只能添加预定义属性的值。我不知道该怎么做。

我有一个javascript“class”:

function Car(){
this.make="";
this.model="";
//...
}

要创建实例并添加我将使用的属性:

var mycar = new Car();
    mycar.make="honda";
    mycar.model="civic";
    //...

是否有创建实例和添加属性的简写方法,因此我不必键入“mycar”。每一次?

3 个答案:

答案 0 :(得分:2)

如果您的构造函数没有做任何重要的事情,您可以使用Object.create()



function Car() {
  //...
}

console.log(
  Object.create(
    Car.prototype,
    Object.getOwnPropertyDescriptors(
      { make: 'honda', model: 'civic' }
    )
  )
);




我不会完全称之为"简写",但 是单个语句,如果你的构造函数'它忽略了调用Car()。身体是多余的。

我个人建议您在constructor的正文中使用Object.assign()



function Car(props) {
  /* to formally mimic behavior of default parameters specification */
  // props = arguments.length < 1 || props === undefined ? {} : props;
  /* commonly used "good-enough" ES5 equivalent */
  props = props || {};
  Object.assign(this, props);
}

console.log(
  new Car({ make: 'honda', model: 'civic' })
);
&#13;
&#13;
&#13;

或ES6:

&#13;
&#13;
class Car {
  constructor (props = {}) {
    Object.assign(this, props);
  }
}

console.log(
  new Car({ make: 'honda', model: 'civic' })
);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您应该使用构造函数的参数:

function Car(make, model) {
  this.make = make;
  this.model = model;
}
var mycar = new Car("honda", "civic");

答案 2 :(得分:-1)

您可以使用Object.assign功能。

function Car() {
  this.make = "";
  this.model = "";
}

var mycar = new Car();
Object.assign(mycar, { make: "honda", model: "civic" });

console.log(mycar);