主题:  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__也有点晕。。。··)