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

JS模式之簡單的訂閱者和發(fā)布者模式完整實例

 更新時間:2015年06月30日 12:03:31   作者:方方和圓圓  
這篇文章主要介紹了JS模式之簡單的訂閱者和發(fā)布者模式,以一個完整實例形式詳細分析了JS訂閱者和發(fā)布者模式基本實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了JS模式之簡單的訂閱者和發(fā)布者模式。分享給大家供大家參考。具體如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>parten</title>
</head>
<body>
<script>
var singletonTest = SingletonTest.getInstance({
  pointX : 5
});
console.log(singletonTest.pointX);
//easy_Observer_model;
function ObserverList(){
  this.observerList = [];
};
ObserverList.prototype.Add = function(obj){
  return this.observerList.push(obj);
};
ObserverList.prototype.Empty = function(){
  this.observerList = [];
};
ObserverList.prototype.Count = function(){
  return this.observerList.length;
};
ObserverList.prototype.Get = function(index){
  if(index>-1 && index<this.observerList.length)
  return this.observerList[index];
};
ObserverList.prototype.Insert = function(obj,index){
  var pointer = -1;
  if(index == 0){
    this.observerList.unshift(obj);
    pointer = index;
  }else if(index == this.observerList.length){
    this.observerList.push(obj);
    pointer = index;
  };
  return pointer;
};
ObserverList.prototype.IndexOf = function(obj,startIndex){
  var i = startIndex, pointer = -1;
  while(i < this.observerList.length){
    if(this.observerList[i] === obj){
      pointer = i;
    };
    i++
  };
  return pointer;
};
ObserverList.prototype.RemoveIndexAt = function(index){
  if(index === 0){
    this.observerList.shift();
  }else if(index === this.observerList.length-1){
    this.observerList.pop();
  };
  return index;
};
function extend(obj,extension){
  for(var key in obj){
    extension[key] = obj[key];
  }
};
//
function Subject(){
  this.observers = new ObserverList();
};
Subject.prototype.AddObserver = function(obj){
  this.observers.add(obj)
};
Subject.prototype.RemoveObserver = function(observer){
  this.observers.removeIndexAt( this.observers.IndexOf(observer,0) );
};
Subject.prototype.Notify = function(context){
  var observerCount = this.observers.count();
  for(var i=0; i<observerCount; i++){
    this.observers.Get(i).update(context);
  };
}
//Pubsub//subscribe
var Pubsub = {};
(function(q){
  var topics = [],
    subUid = -1;
  q.publish = function(topic,args){
    if(!topics[topic]){
      return false;
    };
    var subscribers = topics[topic],
      len = subscribers ? subscribers.length : 0;
    while(len--){
      subscribers[len].func(topic,args);
    }
    return this;
  };
  q.subscribe = function(topic,func){
    if(!topics[topic]){
      topics[topic] = [];
    };
    var token = (++subUid).toString();
    topics[topic].push({
      token : token,
      func : func
    });
    return token;
  };
  q.unsubscribe = function(token){
    for(var m in topics){
      if(topics[m]){
        for(var i=0; i<topics[m].length; i++){
          if(topics[m][i].token === token){
            topics[m].splice(i,1);
            return token;
          }
        }
      };
    };
    return this;
  }
})(pubsub);
</script>
</body>
</html>

希望本文所述對大家的javascript程序設計有所幫助。

相關文章

  • canvas基礎繪制-絢麗倒計時的實例

    canvas基礎繪制-絢麗倒計時的實例

    下面小編就為大家?guī)硪黄猚anvas基礎繪制-絢麗倒計時的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 淺談JavaScript 數(shù)據(jù)屬性和訪問器屬性

    淺談JavaScript 數(shù)據(jù)屬性和訪問器屬性

    下面小編就為大家?guī)硪黄獪\談JavaScript 數(shù)據(jù)屬性和訪問器屬性。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 前端路由&webpack基礎配置詳解

    前端路由&webpack基礎配置詳解

    這篇文章主要介紹了前端路由&webpack基礎配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 利用weixin-java-miniapp生成小程序碼并直接返回圖片文件流的方法

    利用weixin-java-miniapp生成小程序碼并直接返回圖片文件流的方法

    這篇文章主要介紹了利用weixin-java-miniapp生成小程序碼并直接返回圖片文件流的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • javascript動畫之模擬拖拽效果篇

    javascript動畫之模擬拖拽效果篇

    其實javascript本身是具有原生拖放功能的,但是由于兼容性問題,以及功能實現(xiàn)的方式,用的不是很廣泛。javascript動畫廣泛使用的還是模擬拖拽。本文將詳細介紹javascript的模擬拖拽,有需要的可以參考借鑒。
    2016-09-09
  • JavaScript函數(shù)定義方法實例詳解

    JavaScript函數(shù)定義方法實例詳解

    這篇文章主要介紹了JavaScript函數(shù)定義方法,結合實例形式較為詳細的分析了javascript函數(shù)的聲明、定義、調用等原理與常見操作技巧,需要的朋友可以參考下
    2019-03-03
  • JavaScript禁用右鍵單擊優(yōu)缺點分析

    JavaScript禁用右鍵單擊優(yōu)缺點分析

    在本篇文章里小編給大家分享了關于JavaScript禁用右鍵單擊優(yōu)缺點分析,有需要的朋友們學習下。
    2019-01-01
  • 基于Web Audio API實現(xiàn)音頻可視化效果

    基于Web Audio API實現(xiàn)音頻可視化效果

    這篇文章主要介紹了基于Web Audio API實現(xiàn)音頻可視化效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • JS首屏加載時間優(yōu)化的解決方法總結

    JS首屏加載時間優(yōu)化的解決方法總結

    首屏加載時間是一個衡量網(wǎng)頁性能和用戶體驗的關鍵指標,這個問題無論是在面試中還是在項目開發(fā)中都占有極其高的權重,本文為大家整理了幾種JS中優(yōu)化首屏加載時間的方法,希望對大家有所幫助
    2024-02-02
  • Django使用多數(shù)據(jù)庫的方法

    Django使用多數(shù)據(jù)庫的方法

    有些項目可能涉及到使用多個數(shù)據(jù)庫的情況,方法很簡單。接下來通過本文給大家介紹Django使用多數(shù)據(jù)庫的方法,需要的朋友參考下吧
    2017-09-09

最新評論

田阳县| 河北区| 论坛| 探索| 衡南县| 元谋县| 潮安县| 安平县| 汉寿县| 双桥区| 苏尼特左旗| 石狮市| 偃师市| 肇州县| 鹿泉市| 古交市| 巧家县| 格尔木市| 枝江市| 分宜县| 资中县| 沙洋县| 泰来县| 莫力| 蓝山县| 康保县| 南京市| 延川县| 株洲市| 阜南县| 鲁甸县| 杭锦后旗| 曲水县| 陈巴尔虎旗| 克山县| 英山县| 霍林郭勒市| 佛山市| 荔波县| 奉节县| 府谷县|