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

JavaScript組合模式學習要點

 更新時間:2016年08月26日 14:17:41   投稿:mrr  
組合模式大概是設計模式里面使用最為廣泛的模式之一了,模式本身理解起來也比較簡單,以至于可以毫不費力的寫出一個能用的組合模式偽代碼

組合模式:將一組對象組合成樹形結構,并統(tǒng)一對待組合對象和葉對象,忽略它們之間的不同(因為葉對象也可以也可以包含葉對象而成為組合對象),組合模式中的對象只能是一對多的關系,不能出現(xiàn)多對一。

基本單元:一個組合對象包含多個葉對象。每個基本單元又可以是別的組合對象的葉對象類似文件夾與它里面的內容的關系網,一個文件夾或文件又可以是其它文件夾的內容,但一個文件夾或文件不能同時屬于多個上級文件夾。

在JavaScript中實現(xiàn)組合模式時,要保證組合對象和葉對象擁有相同的接口方法,對同一組葉對象的操作必須具有一致性。

例子:

//定義組合對象
var Folder = function (name) {
this.name = name;
this.parent = null;
this.files = [];
};
Folder.prototype.add = function (file) {
file.parent = this;
if(this.files.indexOf(file) === -1){
this.files.push(file);
}else{
console.log('\''+file.name+'\'已存在,添加失敗');
}
};
Folder.prototype.scan = function () {
if(this.parent){
console.log('開始掃描\''+this.parent.name+'\': '+this.name);
}else{
console.log('開始掃描根目錄: '+this.name);
}
//關鍵在這里,調用所有它的葉對象的接口方法scan()
for(var i = 0, file; file = this.files[i++];){
file.scan();
}
};
Folder.prototype.remove = function (file) {
var n = this.files.indexOf(file);
if(n === -1){console.log('無法刪除: \''+file.name+'\'不存在:');}
if(n >= 0){
this.files.splice(n,1);
console.log('成功刪除:'+file.name);
}
};
//定義葉對象
var File = function (name) {
this.name = name;
this.parent = null;
};
File.prototype.add = function () {
console.log('不能添加在文件下面');
};
File.prototype.scan = function () {
console.log(this.parent.name+': '+this.name);
};
File.prototype.remove = function (file) {
console.log('無法刪除: \''+file.name+'\'不存在:');
};
//測試
var folder = new Folder('目錄');
var folder1 = new Folder('學習質料');
var folder2 = new Folder('javascript');
var file1 = new File('Node.js');
var file2 = new File('qq.jpg');
folder.add(folder1);
folder.add(folder1);
folder.add(folder2);
folder1.add(file1);
folder2.add(file2);
//'學習質料'添加成功
//'學習質料'已存在,添加失敗
//'javascript'添加成功
//'Node.js'添加成功
//'qq.jpg'添加成功
folder.remove(folder1);
folder.remove(folder1);
file1.remove(file1);
//成功刪除:學習質料
//無法刪除: '學習質料'不存在:
//無法刪除: 'Node.js'不存在:
folder.scan(); //這里相當于執(zhí)行了一個宏命令
//開始掃描根目錄: 目錄
//開始掃描'目錄': javascript
//javascript: qq.jpg

以上所述是小編給大家介紹的JavaScript組合模式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • JavaScript簡單實現(xiàn)彈出拖拽窗口(一)

    JavaScript簡單實現(xiàn)彈出拖拽窗口(一)

    這篇文章主要為大家詳細介紹了JavaScript簡單實現(xiàn)彈出拖拽窗口的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 從數(shù)據庫讀取數(shù)據后將其輸出成html標簽的三種方法

    從數(shù)據庫讀取數(shù)據后將其輸出成html標簽的三種方法

    需要輸出成html標簽時編譯器卻自動幫我們輸出成字符串,這該怎么辦?下面有個三個解決方法,一一測試便知其效果是如何
    2014-10-10
  • 基于Cesium實現(xiàn)加載顯示熱力圖

    基于Cesium實現(xiàn)加載顯示熱力圖

    這篇文章主要介紹了如何利用Cesium實現(xiàn)加載顯示熱力圖,文中的示例代碼講解詳細,對我們學習或工作有一定的幫助,需要的可以參考一下
    2022-06-06
  • JS實現(xiàn)獲取時間已經時間與時間戳轉換

    JS實現(xiàn)獲取時間已經時間與時間戳轉換

    這篇文章主要為大家提供了用JavaScript編寫的獲取時間的類,以及時間戳轉時間的三種格式,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-03-03
  • 原生JavaScript實現(xiàn)五子棋游戲

    原生JavaScript實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了原生JavaScript實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 如何用CocosCreator實現(xiàn)射擊小游戲

    如何用CocosCreator實現(xiàn)射擊小游戲

    這篇文章主要介紹了如何用CocosCreator實現(xiàn)射擊小游戲,此游戲難度不大,僅作為入門的練手小游戲,一小時就能完成,里面用到的知識很常用,喜歡游戲的同學,可以參考下
    2021-04-04
  • js原生跨域_用script標簽的簡單實現(xiàn)

    js原生跨域_用script標簽的簡單實現(xiàn)

    下面小編就為大家?guī)硪黄猨s原生跨域_用script標簽的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • js彈出層(jQuery插件形式附帶reLoad功能)

    js彈出層(jQuery插件形式附帶reLoad功能)

    之前的彈出層做的挺好,但是代碼結構有問題,這次用到了,重構了一下,改為jQuery的插件形式,感覺還不錯,有興趣的朋友可以參考下,希望可以幫助到你
    2013-04-04
  • JavaScript實現(xiàn)消息框示例

    JavaScript實現(xiàn)消息框示例

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)消息框示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • js實現(xiàn)帶積分彈球小游戲

    js實現(xiàn)帶積分彈球小游戲

    這篇文章主要為大家詳細介紹了js實現(xiàn)帶積分彈球小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論

新丰县| 宁海县| 安福县| 济阳县| 淄博市| 昌江| 彰武县| 清丰县| 凤庆县| 巩留县| 晋州市| 象山县| 德化县| 汾西县| 崇信县| 陵水| 都江堰市| 四川省| 周至县| 慈溪市| 英超| 大方县| 洛阳市| 嘉定区| 民勤县| 莱州市| 普宁市| 东阳市| 诏安县| 鹤庆县| 宁蒗| 青龙| 岳普湖县| 保定市| 遵化市| 吉木萨尔县| 潜江市| 民权县| 许昌县| 吕梁市| 蒲城县|