JavaScript继承方式–待续

JavaScript继承
1、继承方式
a、原型链继承
b、借用构造函数继承
c、组合继承(原型+借用构造)
d、原型式继承
e、寄生式继承
f、寄生组合式继承
2、各种继承方式介绍
2.1、原型链继承

    function Person(name,age){
        this.name = name;
        this.age = age;
    }
    Person.prototype.study = function(){
        console.log('study finish!');
    };
    function Man (){   
    }
    Man.prototype = new Person();// *key point:原型链继承
    var xiaoming = new Man();
    xiaoming.study();

*key point:把父类的实例赋给子类的原型。只能继承方法。

2.2、借用构造函数继承

    function Person(name,age){
        this.name = name;
        this.age = age;
    }
    Person.prototype.study = function(){
        console.log('study finish!');
    };
    function Man (name,age) {
        Person.apply(this,arguments);// *key point:借用构造函数继承
    }
    var xiaoming = new Man('xiaoming','20');
    xiaoming.study();

*key point:在子类的构造函数里利用apply去调用父类的构造函数,从而达到继承父类属性的效果。每个实例都有一份自己的资源,但是这种方法只能继承父类的实例属性,不能继承父类的方法。

2.3、组合继承(原型+借用构造)

    function Person(name,age){
        this.name = name;
        this.age = age;
    }
    Person.prototype.study = function(){
        console.log('study finish!');
    };
    function Man (name,age) {
        Person.apply(this,arguments);// *key point1:借用构造函数继承
    }
    Man.prototype = new Person();// *key point2:原型链继承
    var xiaoming = new Man('xiaoming','20');
    xiaoming.study();

*key point1 + *key point2 :组合式继承。组合原型链继承加借用构造函数继承。
会对父类的部分属性进行覆盖。未被覆盖的属性,所以实例共享。
2.4、原型式继承
2.5、寄生式继承
2.6、寄生组合式继承

此条目发表在JavaScript分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注