中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中簡單工廠模式的使用方法

發布時間:2020-07-22 15:00:22 來源:億速云 閱讀:306 作者:小豬 欄目:web開發

這篇文章主要講解了JavaScript中簡單工廠模式的使用方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

第一步,Ajax操作接口(目的是起一個接口檢測作用)

(1)引入接口文件

//定義一個靜態方法來實現接口與實現類的直接檢驗
//靜態方法不要寫出Interface.prototype ,因為這是寫到接口的原型鏈上的
//我們要把靜態的函數直接寫到類層次上
//(1)定義一個接口類
var Interface=function (name,methods) {//name:接口名字
 if(arguments.length<2){
  alert("必須是兩個參數")
 }
 this.name=name;
 this.methods=[];//定義一個空數組裝載函數名
 for(var i=0;i<methods.length;i++){
  if(typeof methods[i]!="string"){
   alert("函數名必須是字符串類型");
  }else {
   this.methods.push( methods[i]);
  }
 }
};
Interface.ensureImplement=function (object) {
 if(arguments.length<2){
  throw new Error("參數必須不少于2個")
  return false;
 }
 for(var i=1;i<arguments.length;i++){
  var inter=arguments[i];
  //如果是接口就必須是Interface類型
  if(inter.constructor!=Interface){
   throw new Error("如果是接口類的話,就必須是Interface類型");
  }
  //判斷接口中的方法是否全部實現
  //遍歷函數集合
  for(var j=0;j<inter.methods.length;j++){
   var method=inter.methods[j];//接口中所有函數

   //object[method]傳入的函數
   //最終是判斷傳入的函數是否與接口中所用函數匹配
   if(!object[method]||typeof object[method]!="function" ){//實現類中必須有方法名字與接口中所用方法名相同
    throw new Error("實現類中沒有完全實現接口中的所有方法")
   }
  }
 }
}

第二步,實例化一個可以具體的ajax接口

var AjaxHandler=new Interface("AjaxHandler",["request","createXhrObject"]);

第三步,針對接口的ajax實現類

(1)定義一個空類

var SimpleHandler=function(){};

(2)在該空類上直接擴展原型---實現接口里面的方法

 SimpleHandler.prototype={
  /*
  * method:get post
  * url:請求地址
  * callback:回調函數
  * postVars:傳入參數
  * */
  request:function (method,url,callback,postVars) {
     //1,使用工廠得到xhr對象
   var xhr=this.createXhrObject();

   xhr.onreadystatechange=function () {
    //4代表的意思是交互完成
    if(xhr.readyState!=4) return;
     //200值的是正常交互完成
     //404文件未找到
     //500 內部程序出錯
     (xhr.status==200)&#63;callback.success(xhr.responseText,xhr.responseXML):
     callback.failure(xhr.status);
   }
   //打開鏈接
   xhr.open(method,url,true);
   //設置參數
   if(method!="POST"){
    postVars=null;
   }
   xhr.send(postVars);
  },
  //2,獲取xhr的方法--不同瀏覽器不一樣
  createXhrObject:function () {
   var methods=[
    function () {return new XMLHttpRequest();},
    function () {return new ActiveXObject("Microsoft.XMLHTTP");}
   ];
   //利用try--catch 制作一個智能循環體
      for(var i=0;i<methods.length;i++){
       try{
        methods[i]();
       }catch(e) {
        continue;//回到循環開始的地方重新開始
       }
       this.createXhrObject=methods[i]();//非常重要,只有這樣才能確保不用每一次請求,全循環數組
       return methods[i]();
      }
   //如果全不對則報錯
   throw new Error("error");
  }
 };

第三步,使用檢驗

(1)實例化對象

var myHandler=new SimpleHandler();

(2)接口檢驗實現類是否完全實現接口中的方法

Interface.ensureImplement(myHandler,AjaxHandler);
//檢驗是否實現接口中所有方法

(3)定義一個回調對象

 var callback={
  success:function (responseText) {
   alert("ok");
  },
   failure:function (status) {
   alert(status+"failure")
   }
  };

(4)最終的使用格式

myHandler.request("POST","http://www.baidu.com",callback);
//若url為""會默認為本地的鏈接,其他正確的鏈接,會出現跨域問題

看完上述內容,是不是對JavaScript中簡單工廠模式的使用方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泌阳县| 灵丘县| 阿荣旗| 萝北县| 磐安县| 南昌市| 万荣县| 台北县| 佛冈县| 东阿县| 寻甸| 揭东县| 凤台县| 福贡县| 诸暨市| 金沙县| 河北省| 新郑市| 清涧县| 伊金霍洛旗| 钦州市| 安宁市| 米脂县| 什邡市| 武冈市| 浦城县| 奉贤区| 桦南县| 和硕县| 墨竹工卡县| 山东省| 长海县| 长白| 库车县| 都匀市| 马山县| 乌拉特前旗| 秦皇岛市| 专栏| 临澧县| 新平|