1 var ClassUSA=function()
2
3 {
4
5 this.value='USA';
6
7 this.getOtherValue=function()
8
9 {
10
11 }
12
13 }
14
15 var ClassChina=function()
16
17 {
18
19 this.value='China';
20
21 this.show=function()
22
23 {
24
25 document.write(this.value);
26
27 }
28
29 }
30
31 var USA=new ClassUSA();
32
33 var China=new ClassChina();
34
35 <需求一>在document上显示USA的value.
36
37 方案一:
38
39 USA.show=China.show;
40
41 方案二:
42
43 China.show.apply(USA);
44
45 方案一使USA拥有了方法show,而方案二没有使USA拥有方法show.
46
47 <需求二>
48
49 使USA的show方法显示China的value.(有这样的需要.只是这个例子不是很恰当.这里先不考虑这些.)
50
51 有两个要点,一是要使USA拥有show方法,二是要显示的不是USA的value而是China的value.
52
53 方案一:
54
55 给China增加方法:
56
57 ClassChina.show2=function()
58
59 {
60
61 return function(){return this.value;};
62
63 }
64
65 使用:
66
67 USA.show=China.show2.apply(China);
68
69 USA.show();
70
71 方案二:
72
73
74
75 Function.prototype.bind=function(object)
76
77 {
78
79 var _method=this;
80
81 return function(){return _method.apply(object);};
82
83 }//简化的bind的,还应该加入参数传递.
84
85 USA.show=China.show.bind(China);
86
87 使用:
88
89 USA.show();
90
91
92
93 OVER.
94