function Polygon(iSides) {
this.sides = iSides;
if (typeof Polygon._initialized == "undefined") {
Polygon.prototype.getArea = function () {
return 0;
};
Polygon._initialized = true;
}
}
function Triangle(iBase, iHeight) {
Polygon.call(this, 3); //流氓式的继承就在这里,“无缘无故”的强制执行了
this.base = iBase;
this.height = iHeight;
if (typeof Triangle._initialized == "undefined") {
Triangle.prototype.getArea = function () {
return 0.5 * this.base * this.height;
};
Triangle._initialized = true;
}
}
Triangle.prototype = new Polygon(); 关键之处就是在这里实现了继承父类的属性。
var triangle = new Triangle(12, 4);
alert(triangle.sides); //调用sides属性无话可说,此时该对象就有一个sides属性
alert(triangle.getArea());
调用getArea()的时候我就要提问了,理论上此时的triangle应该有两个getArea(),一个是父类的,一个是本身的,直接调用肯定是调用本身的getArea(),但是如果我要显示的调用父类的getArea(),JavaScript有没有实现这样的功能呢?