在JS裏面,有一種類似工廠模式的定義對象方法——寄生構造函數模式,如下所示:
其實,除了使用new操作符來定義新的對象,以及將其稱之爲構造函數之外,其他和工廠模式定義一模一樣。那麼這個寄生構造函數到底是爲了什麼呢?
我們看一個例子:
我們定義一個Array的引用類型,並且初始化
var colors=new Array("red","blue","yellow");
alert("colors"); //red,blue,yellow
有時候我們並不想數組輸出元素之間用“,”分割,於是我們採用join()方法;
但是每定義一個引用類型都使用一次join()方法有點麻煩,那麼解決這個問題的辦法就是直接改變Array構造函數默認定義的輸出方式,
類似Object,Array,Date等等的擁有原生構造函數的引用類型並不能直接修改其原生構造函數,那麼此時寄生構造函數就派上用場了。
於是我們可以定義如下一個特殊的Array引用類型:
只要每次利用SpecialArray()來定義新的引用類型即可實現改變Array的輸出方式。
綜上所述,其實寄生構造函數就是在原生構造函數上的一個擴展,也就是你可以利用寄生構造函數來自定義一種引用類型,實現自己想要達到的效果。