物件實字
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