JS模式:jq中简单的模式--》采摘自js设计(tomxu_version)
运行下面代码
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script> //据说这就是组合模式了,就是逸带的感觉; var $ = jQuery = window.$ = function(){}; $.prototype = { addClass : function(value){ var classNames, i ,l , elem, setClass, c, cl; if( $.ifFunction(value) ){ return $.each(this,function(j){ $(this).addClass( value.call(this,j,this.ClassName) ); }) }; if(value && typeof value === "string"){ className = this.className.split(/\b/); for(var i=0, l=this.length; i<l; i++){ elem = this[i]; //这个就是又一个each循环了; if(elem.nodeType === 1){ if( !elem.className && className.length === 1 ){ elem.className = value; }else{ setClass = " " + elem.className + " "; for(c=0, cl=className.length; c<cl; c++){ if( !!setClass.indexOf( className[c] ) ){ setClass += className[c] + " "; } }; setClass += value; elem.calssName = $.trim( setClass ); } } } }; return this; } }; //facade__外观模式; $.ajax = function(){ }; $.ajax.setting.xhr = window.ActiveXObject ? activeObject() : createStndardXHR(); function createStandardXHR(){ try{ return new window.XMLHttpRequest; }catch(e){}; }; function activeXObject(){ try{ return new window.activeXObject("Microsoft","XMLHTTP"); }catch(e){} }; //jQ中的观察者模式(p/s); //使用包装包装一个jQ出来; (function($){ var o = $({}); // 让o有了jq的继承,可以使用jq的工具方法和函数 $.subscribe = function(){ o.bind.apply(o,arguments); }; $.unsubscribe = function(){ o.unbind.apply(o,arguments) }; $.publish = function(){ o.trigger.apply(o,arguments) } }(jQuery)) // 注意:这里面使用的是apply 而不是 call; apply可以直接传arguments; </script> </body> </html>
天道酬勤
本文作者:方方和圆圆
本文链接:https://www.cnblogs.com/diligenceday/p/3436678.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步