簡體   English   中英

javascript類實例對象字面量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM