[英]javascript class instance object literal
是否有一種速記方法可以在 javascript 中向類的實例添加屬性?
編輯:重復的答案是關於向對象而不是類添加屬性。 我試圖讓用戶輕松添加大約 10-20 個屬性。 我還試圖確保他們不能添加自己的屬性,而只能向預定義的屬性添加值。 我不知道該怎么做。
我有一個 javascript“類”:
function Car(){
this.make="";
this.model="";
//...
}
要創建一個實例並添加屬性,我會使用:
var mycar = new Car();
mycar.make="honda";
mycar.model="civic";
//...
是否有一種快捷方式來創建實例並添加屬性,這樣我就不必鍵入“mycar”。 每一次?
如果你的構造函數沒有做任何重要的事情,你可以使用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' }) );
或 ES6:
class Car { constructor (props = {}) { Object.assign(this, props); } } console.log( new Car({ make: 'honda', model: 'civic' }) );
您應該使用構造函數的參數:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.