|
主题: Demos,Help!! About inheritor..
|
 yhm58
职务:普通成员
等级:1
金币:0.0
发贴:5
注册:2002/2/2 13:12:27
|
#12002/8/10 15:38:34
//code a=function(value){this.value=value;}
a.prototype.info=function(){trace("the value of a :"+this.value);}
b=function(value,value1){
this.value1=value1;
this.__proto__=new a(value); }
b.prototype.info=function(){super.info();trace("the value of b :"+this.value1);}
temp=new b("a","b"); temp.info();
结果只输出了"the value of a :a",经过研究,似乎是函数调用时发生了岐视,使temp.info()调用的是superclass版的info,而不是子类的....为什么会这样,要如何解决呢(我不想更改函数名)?
希望可以帮帮我...谢谢你了。:)
还有一个问题:myFunction.apply(thisObject, argumentsObject)中, thisObject个参数我发现一般情况都被设为null,有什么用呢??
再次感谢..
|
 s22
职务:版主
等级:4
金币:10.0
发贴:1634
注册:2004/12/19 13:06:46
|
#22002/8/10 20:21:36
继承好象用的不对
|
 yhm58
职务:普通成员
等级:1
金币:0.0
发贴:5
注册:2002/2/2 13:12:27
|
#32002/8/10 22:24:26
怎么不对?this.__proto__=new class()有问题吗? 当然也可以用class.prototype=new class1();不过这样一来,要怎么样继承参数呢? 可能说要用super来引用superclass,但是如果我是连续的多层继承,我想调用任意一层的构造函数或其方法要什么办呢。唉,我对Flash的oo机制还处于混乱中,忘各位指点。
刚刚又研究了一下,也看了帝国的一编贴子,发现不是同名函数的岐视问题。 如: a=function(){} b=function(){this.__proto__=new a();} b.prototype.test=function(){trace("bb");} c=new b(); c.test(); 发然没有任何的动作,看来__proto__和prototype最不要同时使用,好象会引起冲突。 但是原因是什么,还不明中。
希望大家帮忙,谢谢。
|
 cgddn
职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2001/3/1 13:17:58
|
|
 cgddn
职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2001/3/1 13:17:58
|
#52002/8/12 9:24:55
已经讨论出来的有几种写法, 1)把你的b的info method 写到b 的构造体中,ect...this.subInfo=info.... 2)在b 的构造函数中调用 super构造器,ect:b=function(v1,v2){super(v1).....} 然后用prototype inherit b.prototype=new a();b.prototype.method=function(){...} 3)...嗯。再一个就是用__proto__...具体细节去看帝国那个贴子吧。。(咳咳。。因为我对__proto__也有点晕。。。··)
|