JavaScript设计模式-8.链式调用

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title>javascript高级语法8-链式调用</title>
  6     </head>
  7     <body>
  8         <div id="box"></div>
  9         <script type="text/javascript">
 10             function demo1(){
 11             (function(){
 12                 //创建一个cat类
 13                 function Cat(name){
 14                     this.name = name;
 15                     this.run = function(){
 16                         document.write(this.name+" start run"+"<br/>")
 17                     }
 18                     this.stopRun = function(){
 19                         document.write(this.name+" stop run"+"<br/>")
 20                     }
 21                     this.sing = function(){
 22                         document.write(this.name+" start singing"+"<br/>")
 23                     }
 24                     this.stopSing = function(){
 25                         document.write(this.name+" stop sing"+"<br/>")
 26                     }
 27                 }
 28                 //测试
 29                 var c = new Cat("maomi");
 30                 c.run();
 31                 c.sing();
 32                 c.stopRun();
 33                 c.stopSing();
 34             })()}
 35
 36             function demo2(){
 37             (function(){
 38                 //创建一个cat类
 39                 function Cat(name){
 40                     this.name = name;
 41                     this.run = function(){
 42                         document.write(this.name+" start run"+"<br/>")
 43                         return this;
 44                     }
 45                     this.stopRun = function(){
 46                         document.write(this.name+" stop run"+"<br/>")
 47                         return this;
 48                     }
 49                     this.sing = function(){
 50                         document.write(this.name+" start singing"+"<br/>")
 51                         return this;
 52                     }
 53                     this.stopSing = function(){
 54                         document.write(this.name+" stop sing"+"<br/>")
 55                         return this;
 56                     }
 57                 }
 58                 //测试
 59                 var c = new Cat("lili");
 60                 c.run().sing().stopRun().stopSing();
 61
 62             })()
 63             }
 64
 65
 66             //为了给类(Function类)扩展函数,定义一个它的静态函数
 67             Function.prototype.method = function(name,fn){
 68                 this.prototype[name] = fn;
 69                 return this;
 70             };
 71             (function(){
 72                 //模仿jquery链式调用
 73                 function _$(els){};
 74                 //准备方法
 75                 _$.onready = function(fn){
 76                     //按需求把对象(_$)注册到window上
 77                     window.$ = function(){
 78                         return new _$(arguments);
 79                     }
 80                     fn();
 81                 }
 82                 //链式的对象增加jquery库提供的操作函数。
 83                 _$.method("addEvent",function(type,fn){
 84                     fn();
 85                 }).method("getEvent",function(fn,e){
 86                     fn();
 87                 }).method("addClass",function(className,fn){
 88                     fn();
 89                 }).method("removeClass",function(className,fn){
 90                     fn();
 91                 }).method("replaceClass",function(oldClass,newClass){
 92                     fn();
 93                 }).method("getStyle",function(el,fn){
 94                     fn();
 95                 }).method("setStyle",function(el,fn){
 96                     fn();
 97                 }).method("load",function(url,fn){
 98                     fn();
 99                 })
100
101                 //开始使用
102                 _$.onready(function(){
103                     $("#box").addEvent("click",function(){
104                         alert("click event")
105                     })
106                 })
107             })()
108         </script>
109     </body>
110 </html>
时间: 2024-10-22 23:36:06

JavaScript设计模式-8.链式调用的相关文章

javascript设计模式 第6章 链式调用

链式调用是一种语法招数.作用:能让你通过重用一个初始化操作来达到用少量代码表达复杂操作的目的.. 这种技术包含两个部分: 1.一个创建代表html元素的对象的工厂.以及一批对这个html元素执行某些操作的方法. 通过例子对比:之前和之后的代码,对链式调用的概念的初步认识.  之前:   addevent($('example'),"click",function(){    setstyle(this,"color",'green');    show(this);

JavaScript设计模式——方法的链式调用

方法的链式调用: 1 (function() { 2 //私有类 3 function _$ (els) { 4 this.elements = []; 5 for(var i = 0, len = els.length; i < len; ++i){ 6 var element = els[i]; 7 if(typeof element === 'string'){ 8 element = document.getElementById(element); 9 } 10 this.elemen

关于JavaScript中的setTimeout()链式调用和setInterval()探索

http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/archive/2012/04/12/2444106.html 下面的参考:http://evantre.iteye.com/blog/1718777 1.选题缘起 在知乎上瞎逛的时候看到一个自问自答的问题: 知乎上,前端开发领域有哪些值得推荐的问答?,然后在有哪些经典的 Web 前端或者 JavaScr

如何写 JS 的链式调用 ---》JS 设计模式《----方法的链式调用

1.以$ 函数为例.通常返回一个HTML元素或一个元素集合. 代码如下: function $(){ var elements = []; for(var i=0;i<arguments.length;i++){ var element = argument[i]; if(typeOf element == "String") { element = document.getElementById(element); } if ( arguments.length === 1)

JavaScript 链式调用

我们使用jquery的时候,jquery的简单的语法及可实现链式调用方法,现在我们自己也封装一个链式调用的方法,来理解下 jquery中如何封装链式调用 无非就是每次调用一个方法的时候 给这个方法返回this即可,this指向该对象自身,我们看看代码: 1 // 定义一个简单的对象,每次调用对象的方法的时候,该方法都返回该对象自身 2 var obj = { 3 a: function(){ 4 console.log("输出a"); 5 return this; 6 }, 7 b:f

JavaScript链式调用

方法的链式调用 调用链的结构 对$函数你已经很熟悉了.它通常返回一个html元素或一个html元素的集合,如下: function$(){ var elements = []; for(vari=0,len=arguments.length;i<len;++i){ var element = arguments[i]; if(typeof element ===”string”){ element = document.getElementById(element); } if(argument

链式调用

链式调用 不论是JavaScript还是C#程序,我们已经习惯了采用如下所示的"链式调用"的方式进行编程,这样确实会使我们的程序变得很精练. 1: new Foo() 2: .UseXxx() 3: .UseZzz() 4: .UseZzz() 5: .Invoke(); 采用这种链式调用方式的很多方法都是扩展方法,比如上面所示的UseXxx.UseYyy和UseXxx方法就是采用如下形式定义的扩展方法. 1: public interface IFoo 2: { 3: void In

面向对象的链式调用

1. 对象的链式调用 function Chain(){ this.n=0;//属性不一定一开始的时候全部都要初始化 this.fn1=function(_obj){//this指向  new Chain()实例化的对象 alert(this.n++);//注意:alert(this.n++)与this.fn1中的this 不一定指向的对象是一样的 return this; } this.fn2=function(){//同上 alert(this.n++);//注意:alert(this.n+

进击的雨燕-------------可空链式调用

详情转自:http://wiki.jikexueyuan.com/project/swift/chapter2/07_Closures.html 可空链式调用(Optional Chaining)是一种可以请求和调用属性.方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil).如果可空的目标有值,那么调用就会成功:如果选择的目标为空(nil),那么这种调用将返回空(nil).多个连续的调用可以被链接在一起形成一个调用链,如果其中任何一个节点为空(nil)将导致整个链调用失败.