请问这个构造函数链为什么不成功啊
<script>
function Retangle(w,h){
this.width=w;
this.height=h;
}
Retangle.prototype.area=function(){return this.width*this.height}
function PositionRetangle(x,y,w,h){
this.superclass(w,h);
this.x=x
this.y=y
}
PositionRetangle.prototype.superclass=Retangle
a=new PositionRetangle(4,9,5,7)
alert(a.area())
</script>
怎么让a 弹出面积值35啊? 少写了什么吗
------解决方案--------------------
<script type="text/javascript">
function Retangle(w,h){
this.width=w;
this.height=h;
Retangle.prototype.area=function(){return this.width*this.height};
}
function PositionRetangle(x,y){
this.x=x;
this.y=y;
}
PositionRetangle.prototype=new Retangle(5,7);
var a=new PositionRetangle(4,9);
alert(a.area());
</script>
------解决方案--------------------PositionRetangle.prototype=new Retangle();
------解决方案--------------------function Retangle(w,h){
this.width=w;
this.height=h;
}
Retangle.prototype.area=function(){return this.width*this.height}
//因为area方法需要的是width、height这两个属性,所以赋上值再调用area方法就直接可以了。
function PositionRetangle(x,y,w,h){
this.width=w;
this.height=h;
this.x=x
this.y=y
}
//js因为是原型继承,所以想要让PositionRetangle具有area方法,就必须要把
//prototype定义为一个具体的Retangle对象
PositionRetangle.prototype=new Retangle();
a=new PositionRetangle(4,9,5,7)
------解决方案--------------------superclass不是js提供的继承方式,不知道你从哪儿看来的
js没有提供直接的继承方式,要实现继承需要自己写继承方法
一般可以用prototype属性达到继承的目的,在网上搜一下js的继承,代码大把,还有一些框架也都提供继承的函数
------解决方案--------------------你这个代码可以运行么?
我怀疑Retangle这个构造函数怎么得到你给出的参数?
this.superclass(w,h);????建议看看javascript高级程序设计的面向对象部分