欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

有關(guān)于JS構(gòu)造函數(shù)的重載和工廠方法

 更新時(shí)間:2013年04月07日 10:06:13   作者:  
有關(guān)于JS構(gòu)造函數(shù)的重載和工廠方法,對(duì)此有需要的朋友,參考一下。

寫在前面

有時(shí)候我們希望對(duì)象的初始化有多種方式。比如通過元素組成的數(shù)組來初始化一個(gè)Set對(duì)象,而不是通過傳入構(gòu)造函數(shù)的參數(shù)列表來初始化它

重載overload

通過重載這個(gè)構(gòu)造函數(shù)方法讓它根據(jù)傳入?yún)?shù)的不同,來執(zhí)行不同的初始化方法。

復(fù)制代碼 代碼如下:

function Set() {
this.values = {}; // 用這個(gè)對(duì)象的屬性保存這個(gè)集合
this.n = 0; // 集合中值的個(gè)數(shù)

// 如果傳入一個(gè)類數(shù)組的對(duì)象,將這個(gè)元素添加到集合中
// 否則,將所有的參數(shù)都添加到集合中
if(arguments.length === 1 && isArrayLike(arguments[0])) {
this.add.apply(this, arguments[0]); //把對(duì)象利用apply()添加到集合中
}else if(arguments.length > 0) {
this.add.apply(this, arguments); // 利用add()方法添加所有參數(shù)到集合中
}
}

這段代碼所定義的Set()構(gòu)造函數(shù)可以顯式將一組元素作為參數(shù)列表傳入,也可以傳入元素組成的數(shù)組。但這個(gè)構(gòu)造函數(shù)有多義性,如果集合的某個(gè)參數(shù)是一個(gè)數(shù)組就將無法通過這個(gè)構(gòu)造函數(shù)來創(chuàng)建這個(gè)集合了(為了做到這一點(diǎn),需要首先創(chuàng)建一個(gè)空集合,然后顯示調(diào)用add()方法)。

工廠方法

一個(gè)類的方法用于返回類的一個(gè)實(shí)例。

復(fù)制代碼 代碼如下:

// 工廠方法通過數(shù)組初始化Set對(duì)象
Set.fromArray = function(arr) {
var s = new Set();
s.add.apply(s, arr);
return s;
};

不同名字的工廠方法用以執(zhí)行不同的初始化。但由于構(gòu)造函數(shù)是類的公有標(biāo)識(shí),因此每個(gè)類只能有一個(gè)構(gòu)造函數(shù)。但這并不是一個(gè)必須遵守的規(guī)則。

輔助構(gòu)造函數(shù)

通過以函數(shù)的形式調(diào)用Set()來初始化這個(gè)新對(duì)象

復(fù)制代碼 代碼如下:

// 定義Set類型的一個(gè)輔助構(gòu)造函數(shù)
function SetFromArray(arr) {
// 通過以函數(shù)的形式調(diào)用Set()來初始化這個(gè)新對(duì)象
// 將arr的元素作為參數(shù)傳入
Set.apply(this, arr);
}
// 設(shè)置原型, 以便SetFromArray能創(chuàng)建Set實(shí)例
SetFromArray.prototype = Set.prototype;

JavaScript 沒有做不到,只有想不到

 

相關(guān)文章

最新評(píng)論