JS中的原型继承

119 阅读1分钟

function animal(name,num){ this.name = name; this.num = num; } animal.prototype.say = function(){ alert(this.name+this.num+"只"); }

    function cat(){};
    cat.prototype = new animal("cat",2);
    cat.prototype.age = 10;
    var c = new cat();
    c.say();

父类是animal,子类是cat,解析:每个函数都有一个隐藏对象prototype,每个对象都有一个隐藏对象__proto__,而且实例化对象的__proto__属性是与其构造函数prototype属性相等的,上述代码中为什么实例化的c会有say方法,c先在本身对象中寻找say方法,找不到就到__proto__对象找,再找不到就在构造函数prototype对象上找,由于cat的prototype对象等于new animal,相当于等于animal.__proto__对象,所以它最终会找到构造函数animal.prototype对象里面找到say方法