永发信息网

JavaScript面向对象流氓式的继承问题

答案:1  悬赏:20  手机版
解决时间 2021-07-31 18:10

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有没有实现这样的功能呢?

最佳答案
如果你不怕麻烦, 我们甚至还可以通过级连的方式, 取出其构造函数中定义的原始属性值. ..

alert(myPicture.__proto__.__proto__.borderWidth); 根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验!

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
制做易拉罐的材料是稀有金属吗
电脑运行到加载个人设置时速度突然慢下来怎么
DNF时装?
06到现在好看的香港的警匪电影动作电影有哪些
男头是不是有种叫生化?
知道的来治病
蓝山县永州蓝山妇幼保健院地址在哪里啊
生活没有了希望,还能怎么样活下去?活下去还有
余庆县遵义余庆县公安局龙溪派出所地址有谁知
谁有快乐大本营一起来看流星雨剧组的 和 一起
《梦幻诛仙》的帐号和《诛仙二》的帐号是同一
电脑右下角的图标问题
谁有希腊神话故事
他喝酒…喝醉了我撒谎偷替他喝有错吗?
晕车咋办???????
推荐资讯
8号到底下不下雪
问怎么才能不压抑
植物细胞能进行减数分裂?
帮忙解爱情,
木字下面一個十是什麼字
09年的8月份西安什么时候下雨了?
高一地理U型晨昏线图像怎么看啊(分辨晨线,昏
高2轨迹问题
华龙区濮阳小半one club地址在哪,我要去那里
我的提问不能通过....
如何开口给领导说要求涨工资
2008年起重机理论考试题
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?