今天我們將講解JavaScript的Constructor function(建構式函式),解釋其存在原因以及如何判別
為何要有Constructor function呢?
為了方便創造多個具有相同屬性和方法的物件
如何判斷是Constructor function呢?
若函式被調用時使用了new關鍵字,此時函式就會被當成是constructor function
如果要針對汽車品牌建立ford和toyota Object,我們可以分別建立
let ford = {
brand: 'ford',
year: 10,
init: function() {
console.log(this.brand + ' engine start');
}
};
let toyota = {
brand: 'toyota',
year: 15,
init: function() {
console.log(this.brand + ' engine start');
}
};
然而汽車Object其實都是『品牌名稱以及車輛生產年份』
藉由此共通點,此時就可以使用Constructor function
function Car(brand, year){
this.brand = brand;
this.year = year;
this.init = function(){
console.log(this.brand + ' engine start');
};
}
//透過Car建立兩個function(ford, toyota)
let ford = new Car('ford', 10); //填入ford和10至Car的參數中
let toyota = new Car('toyota', 15); //填入toyota和15至Car的參數中
console.log(ford); //Car {brand: 'ford', year: 10}
console.log(toyota); //Car {brand: 'toyota', year: 15}
toyota.init(); //toyota engine start
此外通常Constructor function名稱第一個字會採用大寫