JS中的工廠模式和建構函式模式

2021-08-17 21:53:10 字數 1205 閱讀 9081

工廠方法建立物件

function

createperson

(name , age , gender)

return obj;

}var obj2 = createperson("豬八戒" , 18 , "男");

var obj3 = createperson("孫悟空" , 18 , "男");

obj2.say();//豬八戒

obj3.say();//孫悟空

使用工廠方法建立的物件,使用的建構函式都是object

所以建立的物件都是object這個型別,導致無法區分出多種不同型別的物件

建構函式就是乙個普通的函式,建立方式和普通函式沒有區別,不同的是建構函式習慣上首字母大寫

建構函式和普通函式的區別就是呼叫方式的不同

普通函式是直接呼叫,而建構函式需要使用new關鍵字來呼叫

建構函式的執行流程:

立刻建立乙個新的物件

將新建的物件設定為函式中this,在建構函式中可以使用this來引用新建的物件

逐行執行函式中的**

將新建的物件作為返回值返回

function

person

(name , age , gender)

}var per = new person("孫悟空" ,18 , "男");

var per2 = new person("豬八戒" ,18 , "男");

per.say();//孫悟空

per2.say();//豬八戒

function

animal

(name , say)

}var cat = new animal("貓" , "喵喵");

cat.saym();//喵喵喵喵

使用同乙個建構函式建立的物件,我們稱為一類物件,也將乙個建構函式稱為乙個類。

我們將通過乙個建構函式建立的物件,稱為是該類的例項

使用instanceof可以檢查乙個物件是否是乙個建構函式的例項

語法:

物件 instanceof 建構函式

所有物件都是object的後代,因此任何物件與object作instanceof檢查時都會返回true

JS中的工廠模式與建構函式模式

ecmascript中無法建立類,開發人員就發明了一種函式,用函式來封裝以特定介面建立物件的細節,如下 工廠模式 function creatperson name,age,job o.name name o.age age o.job job o.sayname function return o...

工廠模式與建構函式模式

簡單工廠模式 以object建構函式或字面量的方式建立物件有著重複性,會產生大量重複 的缺陷,由此,便出現了工廠模式。function createobj name,age var obj1 createobj 小明 66 var obj2 createobj 小白 13 console.log o...

JS設計模式 建構函式模式(2)

function car model,year,miles var tom new car 大叔 2009,20000 var dudu new car dudu 2010,5000 console.log tom.output console.log dudu.output 問題是output 在...