關於 物件 Object - 物件建構式


Posted by hoyi-23 on 2021-06-21

物件實字

var temp ={
    property1: value1,
    property2: value2
};

上面這種定義方式稱為"物件實字"(object literals)
物件內會有屬性與值,值可以是函式、存值、物件,兩個屬性間會使用逗號隔開。
例如:

var house={
    name: '月租套房',
    room: 2,
    rent:{
        雙人房: 10000,
        單人房: 8000
    },

    check: function(){
        alert('套房出租')
    }
};

物件建構式

var newHouse = new Object(house);

建構式寫法 可以讓我們先建立一個件範本,接下來新增的物件都會依據此範本作為延伸。


一般物件 VS 物件建構式

一般物件寫法會出現的問題是,當物件賦予到另一個物件上時,兩者是使用相同資料,當修改後者時,前者也會跟著修改。

建構式的方法可以讓我們複製原本的範本來新增一個物件。


建構式寫法

JavaScript 建構式中,會使用functon來建構物件樣板(只能使用function,不能用arrow function)

物件樣板

  • this 代表物件的屬性。
  • 可以透過參數來傳入數值。
  • 使用new來套用此樣板,且最終一樣會產生物件。
  • 使用建構式時,盡量以大寫開頭,讓共同編輯的人也知道此為建構式模板
function HouseTemplate(add,roomNum,pet){
    this.add = add;
    this.roomNum = roomNum;
    this.pet = pet || false;
    this.check = function (){
        if(this.pet){
            console.log('可養寵物');
        }else{
            console.log('不可養寵物');
        }
    }
}

使用new,傳入參數。

var firstHouse = new HouseTemplate('north district', '1' , true);

var secondHouse = new HouseTemplate('West district','2', false);

console.log(firstHouse)

firstHouse.check(); //'可養寵物'

我們也可以把其中一個物件在新增或修改,另一個也不會被影響

firstHouse.rent = function(){console.log(5000);}

firstHouse.rent(); //5000
secondHoue.rent(); //rent is not a function

#物件建構式







Related Posts

箭頭函式(arrow function)

箭頭函式(arrow function)

this 是怎樣

this 是怎樣

( R.. ) 筆記、Beginning Git

( R.. ) 筆記、Beginning Git


Comments