|
主题: 关于继承的问题
|
 Quaden
职务:普通成员
等级:1
金币:0.0
发贴:46
注册:2001/12/17 23:52:09
|
#12002/2/21 20:58:08
在看actionscript的书,有一个继承方面的问题: 例1:
function circle (radius) {
this.radius = radius
}
circle.prototype.area = function () {
return math.PI * this.radius * this.radius
}
mycircle = new circle (4);
例2:
function circle (radius){
this.radius = radius
this.area = function () {
return math.PI * this.radius * this.radius
}
}
书上说不推荐用例2这种方法,为什么呢?着两种有什么不同?
|
 金山羊
职务:普通成员
等级:4
金币:10.0
发贴:827
注册:2002/1/6 14:44:13
|
#22002/2/21 21:25:19
这个问题以前遇到过,我试了用法也是一样的 不过我觉得是第一种方法便于扩展 而第二种方法修改起来不方便
不过我觉得这种方法更接近c++里面的类与其成员函数,不能算继承
编辑历史:[这消息被goldgoat编辑过(编辑时间2002-02-21 21:26:38)]
5d.cn FLASHDEP TECHNOLOGY SUPPORT JAVA/ACTIONSCRIPT/javascript CFML/JSP/COLDFUSION/FLASH REMOTING JRUN/COLDFUSIONMX FLASH/DREAMWEARER
|
 Demon.S
职务:版主
等级:5
金币:10.0
发贴:2468
注册:2000/9/15 13:56:49
|
#32002/2/21 22:16:06
因为继承一个__proto__的时候,flash经常会导致找不到/丢失了__proto__的属性和方法,所以不只是method需要在class外定义,甚至property也要这样 Class=function(){} Class.prototype.prop=abc; Class.prototype.method=function(){//xyz} D  S
|
 Quaden
职务:普通成员
等级:1
金币:0.0
发贴:46
注册:2001/12/17 23:52:09
|
#42002/2/22 8:42:57
噢 谢谢两位了!
|
 金山羊
职务:普通成员
等级:4
金币:10.0
发贴:827
注册:2002/1/6 14:44:13
|
#52002/3/4 10:14:00
画魔在上个帖子中说 引用: 因为继承一个__proto__的时候,flash经常会导致找不到/丢失了__proto__的属性和方法,所以不只是method需要在class外定义,甚至property也要这样
Class=function(){} Class.prototype.prop=abc; Class.prototype.method=function(){//xyz}
D S
说得没有错,不过我现在觉得,这两种方式是不同的两种方式,flash是为了实现不同的功能,而不是丢失了。例如: A = function(){} A.prototype.x = 1; myA = new A(); myA.x = 2;//myA.x ==2; delete myA.x;//myA.x == 1; A = function() { this.x = 1; } myA = new A();//myA.x == 1; myA.x = 2;//myA.x ==2; delete myA.x;//myA.x == null;
5d.cn FLASHDEP TECHNOLOGY SUPPORT JAVA/ACTIONSCRIPT/javascript CFML/JSP/COLDFUSION/FLASH REMOTING JRUN/COLDFUSIONMX FLASH/DREAMWEARER
|
 Demon.S
职务:版主
等级:5
金币:10.0
发贴:2468
注册:2000/9/15 13:56:49
|
#62002/3/4 13:06:21
你的是继承的prop,而不是proto的属性……
|
 金山羊
职务:普通成员
等级:4
金币:10.0
发贴:827
注册:2002/1/6 14:44:13
|
#72002/3/4 15:37:31
画魔在上个帖子中说 引用: 你的是继承的prop,而不是proto的属性……
是这样吧: A = function () { this.x = 1; this.method = function () { trace(this.x); } }; B = function (){} B.prototype.__proto__ = A.prototype ;
5d.cn FLASHDEP TECHNOLOGY SUPPORT JAVA/ACTIONSCRIPT/javascript CFML/JSP/COLDFUSION/FLASH REMOTING JRUN/COLDFUSIONMX FLASH/DREAMWEARER
|