让triangle继承polygon的属性和方法。
不过,看不明白你的例子中,两个alert想说明什么问题。对于prototype,下面的网页上解释的比较清楚。
http://www.javaeye.com/topic/53537

解决方案 »

  1.   


    哦,对...
    是alert(oTriangle.sides);
    应该是这个alert...
    这样的话...还是能alert出来sides = 3
    去掉了那一句...还是继承了属性?我不太懂...
      

  2.   

    //triangle.prototype = new polygon();
    意思是继承 polygon的prototype
    在这里就是 getArea
    然后triangle又重新定义了getArea
    如果不重新定义就是0;
    楼主可以试试<script>
    function polygon(iSides) {
        this.sides = iSides;
    }
    polygon.prototype.getArea = function() {
        return 0;
    }function triangle(iBase, iHeight) {
        polygon.call(this, 3);
        this.base = iBase;
        this.height = iHeight;
    }
    triangle.prototype = new polygon(); // 打开这个
    //triangle.prototype.getArea = function() { //注释掉这个
       // return 0.5 * this.base * this.height;
    //}function test() {
        var oTriangle = new triangle(2, 4);
        var oTriangle1 = new triangle(4, 8);
        alert(oTriangle.getArea()); // 0
        alert(oTriangle1.getArea()); // 0
    }
    test();
    </script>
      

  3.   


    你需要看一下prototype, call 的资料。
    还有JSON的资料。
    你的程序中使用了 polygon.call(this, 3);
    用面向对象的概念就是这操作覆盖了父对象的属性。
    实际上就是调用polygon(iSides) 给 triangle对象追加了一个.sides属性。
    triangle.prototype = new polygon()之后,
    在整个链中 triangle 和他的父对象都有了sides属性。
    不过用为最先找到的时triangle 自己的side属性,因此返回3。你最好还是看看我在1楼发的链接。