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>