最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

有關(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)建這個集合了(為了做到這一點,需要首先創(chuàng)建一個空集合,然后顯示調(diào)用add()方法)。

工廠方法

一個類的方法用于返回類的一個實例。

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

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

不同名字的工廠方法用以執(zhí)行不同的初始化。但由于構(gòu)造函數(shù)是類的公有標識,因此每個類只能有一個構(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實例
SetFromArray.prototype = Set.prototype;

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

 

相關(guān)文章

  • JavaScript起點(嚴格模式深度了解)

    JavaScript起點(嚴格模式深度了解)

    嚴格模式(Strict Mode)是ECMAScript5新增的功能,目前所有的主流瀏覽器的最新版本——包括IE10與Opera12——都支持嚴格模式,感興趣的朋友可以了解下啊,希望本文對你有所幫助
    2013-01-01
  • JavaScript高級程序設(shè)計(第3版)學(xué)習(xí)筆記5 js語句

    JavaScript高級程序設(shè)計(第3版)學(xué)習(xí)筆記5 js語句

    下面采用類似的形式整理一下語句的相關(guān)知識,重點突出一些ECMAScript中比較特別和個人認為比較有意思的地方,同樣,沒有強調(diào)的但比較基礎(chǔ)的語句并非不重要,而是我認為你已經(jīng)熟悉
    2012-10-10
  • 跨域請求的完美解決方法(JSONP, CORS)

    跨域請求的完美解決方法(JSONP, CORS)

    下面小編就為大家?guī)硪黄缬蛘埱蟮耐昝澜鉀Q方法(JSONP, CORS)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • JavaScript的繼承的封裝介紹

    JavaScript的繼承的封裝介紹

    繼承的封裝貌似在每個語言中都有,在本文為大家詳細介紹下,JavaScript的繼承的封裝,感興趣的朋友不要錯過
    2013-10-10
  • javascript編程起步(第一課)

    javascript編程起步(第一課)

    javascript編程起步(第一課)...
    2007-01-01
  • JavaScript入門之語言基礎(chǔ)

    JavaScript入門之語言基礎(chǔ)

    本文通過全面列舉基礎(chǔ)的JavaScript概念這一方式來闡述該語言的基本原理,以此來為初學(xué)者提供一個對語言的基本了解,隨處可見的代碼例子則是用來說明所有的這些概念是如何在語言中體現(xiàn)出來的
    2011-10-10
  • 帶你快速理解javascript中的事件模型

    帶你快速理解javascript中的事件模型

    這篇文章主要介紹了javascript中的事件模型,其中包括了DOM0級事件模型和DOM2級事件模型(事件捕獲和事件冒泡和DOM2級的注冊事件和解除事件),需要的朋友可以參考下
    2017-08-08
  • Javascript排序算法之合并排序(歸并排序)的2個例子

    Javascript排序算法之合并排序(歸并排序)的2個例子

    這篇文章主要介紹了Javascript排序算法之合并排序(歸并排序)的2個例子,需要的朋友可以參考下
    2014-04-04
  • javascript中有趣的反柯里化深入分析

    javascript中有趣的反柯里化深入分析

    國內(nèi)對前端的研究在某些方面也不遜色于國外,反科里化的話題來自javascript之父Brendan Eich去年的一段twitter,需要深入理解的朋友可以參考本文
    2012-12-12
  • 總結(jié)js函數(shù)相關(guān)知識點

    總結(jié)js函數(shù)相關(guān)知識點

    本篇文章給大家簡要分析了JS中函數(shù)相關(guān)的重要知識點,對此有興趣的朋友可以參考學(xué)習(xí)下。
    2018-02-02

最新評論

邳州市| 苏尼特左旗| 江永县| 伊春市| 东平县| 香河县| 应用必备| 喀什市| 小金县| 耒阳市| 旅游| 筠连县| 寻乌县| 和顺县| 东港市| 布尔津县| 西乡县| 麻栗坡县| 贡嘎县| 阿尔山市| 余江县| 酉阳| 神农架林区| 上饶市| 灵川县| 宜川县| 杭锦后旗| 磐安县| 青海省| 长顺县| 梁山县| 托里县| 东城区| 中阳县| 庆安县| 婺源县| 平谷区| 肃北| 突泉县| 开化县| 鄱阳县|