日期:2014-05-16  浏览次数:20298 次

原型链继承的问题
看书的时候,有这么一句话,还有一个例子

这句话着这样的:通过原型链实现继承时,不能使用对象对面量创建原型的方法。因为这样做就会重写原型链。

这句话我实在不明白,然后再看例子:

JScript code
function ChaoLei(){
            this.ageone = 1;
        }
        
        ChaoLei.prototype.getChaoleiValue = function(){
            return this.ageone;
        };
        
        function ZiLei(){
            this.agetwo = 2;
        }
        
        //继承了超类
        ZiLei.prototype = new ChaoLei();
        
        //添加新方法
        ZiLei.prototype={
        getZileiValue:function(){
            return this.agetwo;
        },
        
        //重写超类中的方法
        [color=#FF0000]someOtherMether[/color]:function(){
            return 3;
        }
        }
        var instance =new ZiLei();
        alert  (instance.getChaoleiValue());


 代码如上他说最后一行会返回错误,却是错误了,但是我把代码中红色的someOtherMether改为getChaoleiValue,就可以输出正确的结果了。这不就是说明其实也可以用对象字面量创建原型方法吗? 求解释! 谢谢了 

还有就是给我说说为什么用对象字面量创建原型方法就会重写原型链。 实在弄不明白 谢谢

------解决方案--------------------
可以理解为重写时其实是改变了继承
------解决方案--------------------
第一种情况相当于改变了原型继承
第二种情况是对原型进行扩展