有没有简单的方法在javascript中为类的实例添加属性?
编辑:重复的答案是关于向对象添加属性而不是类。我试图让用户轻松添加大约10-20个属性。我也试图确保他们不能添加自己的属性,但只能添加预定义属性的值。我不知道该怎么做。
我有一个javascript“class”:
function Car(){
this.make="";
this.model="";
//...
}
要创建实例并添加我将使用的属性:
var mycar = new Car();
mycar.make="honda";
mycar.model="civic";
//...
是否有创建实例和添加属性的简写方法,因此我不必键入“mycar”。每一次?
答案 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;
或ES6:
class Car {
constructor (props = {}) {
Object.assign(this, props);
}
}
console.log(
new Car({ make: 'honda', model: 'civic' })
);
&#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);