亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

寫在前面

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

重載overload

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

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

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

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

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

工廠方法

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

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

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

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

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

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

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

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

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

 

相關(guān)文章

最新評論