JAVA & XML & JAVASCRIPT & AJAX & CSS

Web 2.0 技术储备............

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  77 随笔 :: 17 文章 :: 116 评论 :: 0 Trackbacks
 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 
posted on 2006-08-16 09:40 Web 2.0 技术资源 阅读(1259) 评论(1)  编辑  收藏 所属分类: Javascript

评论

# re: JAVASCRIPT & 动态绑定 & 闭包prototype 2008-11-28 10:23 clue
哇,第一次知道有这种方法!

十分感谢~  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: