《javascript設計模式》學習筆記四:Javascript面向對象程序設計鏈式調用實例分析
本文實例講述了Javascript面向對象程序設計鏈式調用。分享給大家供大家參考,具體如下:
1.鏈式調用:
jquery可能是目前大家最常用到的js框架了,也習慣了如下的調用方式:
$(’.someclass’).show().css(’xxx’,’xxxx’).click(function(){}).xxx……
這種調用方式就叫做鏈式調用,也就是說在調用一個方法之后,可以使用方法的返回值來繼續進行方法調用。
2.如何實現鏈式調用:
了解了什么是鏈式調用,我們再來看如何實現鏈式調用,從1中所述我們應該知道鏈式調用的關鍵在于方法的返回值,只要方法的返回值都是調用該方法的對象,那么,我們就可以實現鏈式調用了,我們仿照jquery,使用$作為對象的選擇器:
(function(){ function _$(els){this.elements = [];for(var i=0, len=els.length;i<len;i++){ var elements = els[i]; if(typeof element = ‘string’){ element = document.getElementByIdx_x_x(element);}}this.elements.push(element);}_$.prototype = { each:function(fn){ for(var i=0,len=this.elements.length;i<len;i++){ fn.call(this, this.elements[i]);}return this;},setStyle: function(prop, val){……},show:function(){……},……}window.$ = function(){ return new _$(arguments);}})();
上面的代碼就實現了一個簡單的鏈式調用對象,并且使用一個_$作為$的別名,以防止$被其他代碼改寫而導致整個對象的定義丟失。
附:一個簡單鏈式調用示例:
/*map()items 遍歷的數組的每一項*/var arr = [1,2,3];var num = arr.map(function(items){ return items + 1;});console.log(num);//[2,3,4 var arr = [1,2,3]; var num = arr.map(function (items) { return items+1; }).reduce(function (a,b) {//[2,3,4].reduce() return a+b; }) console.log(num);//0 --- 2+3+4 = 9]/* reduce 實現數組里的每個數相加,也就是給數組的每一項求總和 reduce(function(a,b){ return a+b; },a)--a的初始值*/var arr = [1,2,3];var num_1 = arr.reduce(function (a,b) { return a+b;})console.log(num_1);//6/* 鏈式調用 一個鏈子接一個鏈子 */var arr = [1,2,3];var num = arr.map(function (items) { return items+1;}).reduce(function (a,b) {//[2,3,4].reduce() return a+b;})console.log(num);//0 --- 2+3+4 = 9
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章:
1. ThinkPHP5 通過ajax插入圖片并實時顯示(完整代碼)2. javascript設計模式 ? 建造者模式原理與應用實例分析3. Python使用oslo.vmware管理ESXI虛擬機的示例參考4. IDEA EasyCode 一鍵幫你生成所需代碼5. Java構建JDBC應用程序的實例操作6. 一篇文章帶你了解JavaScript-對象7. IntelliJ IDEA設置條件斷點的方法步驟8. Express 框架中使用 EJS 模板引擎并結合 silly-datetime 庫進行日期格式化的實現方法9. python flask框架快速入門10. 解決Python paramiko 模塊遠程執行ssh 命令 nohup 不生效的問題
