javascript class 实例对象字面量
javascript class instance object literal
是否有 shorthand 方法可以将属性添加到 javascript 中的 class 的实例?
编辑:重复的答案是关于向对象添加属性而不是 class。我试图让用户轻松添加大约 10-20 个属性。我还试图确保他们不能添加自己的属性,而只能向预定义的属性添加值。我不知道该怎么做。
我有一个 javascript "class":
function Car(){
this.make="";
this.model="";
//...
}
要创建一个实例并添加我将使用的属性:
var mycar = new Car();
mycar.make="honda";
mycar.model="civic";
//...
是否有 shorthand 方法来创建实例并添加属性,这样我就不必每次都键入 "mycar."?
你应该使用构造函数的参数:
function Car(make, model) {
this.make = make;
this.model = model;
}
var mycar = new Car("honda", "civic");
您可以使用Object.assign
函数。
function Car() {
this.make = "";
this.model = "";
}
var mycar = new Car();
Object.assign(mycar, { make: "honda", model: "civic" });
console.log(mycar);
如果你的构造函数没有做任何重要的事情,你可以使用 Object.create()
:
function Car() {
//...
}
console.log(
Object.create(
Car.prototype,
Object.getOwnPropertyDescriptors(
{ make: 'honda', model: 'civic' }
)
)
);
我不会确切地称它为 "shorthand",但它 是 一个单独的语句,如果构造函数的主体是多余的,它会省略调用 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' })
);
或 ES6:
class Car {
constructor (props = {}) {
Object.assign(this, props);
}
}
console.log(
new Car({ make: 'honda', model: 'civic' })
);
是否有 shorthand 方法可以将属性添加到 javascript 中的 class 的实例?
编辑:重复的答案是关于向对象添加属性而不是 class。我试图让用户轻松添加大约 10-20 个属性。我还试图确保他们不能添加自己的属性,而只能向预定义的属性添加值。我不知道该怎么做。
我有一个 javascript "class":
function Car(){
this.make="";
this.model="";
//...
}
要创建一个实例并添加我将使用的属性:
var mycar = new Car();
mycar.make="honda";
mycar.model="civic";
//...
是否有 shorthand 方法来创建实例并添加属性,这样我就不必每次都键入 "mycar."?
你应该使用构造函数的参数:
function Car(make, model) {
this.make = make;
this.model = model;
}
var mycar = new Car("honda", "civic");
您可以使用Object.assign
函数。
function Car() {
this.make = "";
this.model = "";
}
var mycar = new Car();
Object.assign(mycar, { make: "honda", model: "civic" });
console.log(mycar);
如果你的构造函数没有做任何重要的事情,你可以使用 Object.create()
:
function Car() {
//...
}
console.log(
Object.create(
Car.prototype,
Object.getOwnPropertyDescriptors(
{ make: 'honda', model: 'civic' }
)
)
);
我不会确切地称它为 "shorthand",但它 是 一个单独的语句,如果构造函数的主体是多余的,它会省略调用 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' })
);
或 ES6:
class Car {
constructor (props = {}) {
Object.assign(this, props);
}
}
console.log(
new Car({ make: 'honda', model: 'civic' })
);