JavaScript中的3种继承方式

JavaScript中继承的方式主要有3种;javascript

        第一种:原型链继承,经过将子元素的原型指向父元素的实例对象来实现继承 ;java

        缺点:字面量重写原型会中断关系,使用引用类型的原型,而且子类型还没法给超类型传递参数函数

        第二种:借用构造函数继承,经过继承父元素的构造函数,来继承其构造函数中声明的一些属性和方法;学习

        缺点:借用构造函数虽然解决了刚才两种问题,但没有原型,则复用无从谈起。因此咱们须要原型链+借用构造函数的模式,这种模式称为组合继承测试

        第三种:原型链+构造函数,在原型中处理方法,在构造函数中处理属性。this

        优势:组合式继承是比较经常使用的一种继承方法,其背后的思路是 使用原型链实现对原型属性和方法的继承,而经过借用构造函数来实现对实例属性的继承。这样,既经过在原型上定义方法实现了函数复用,又保证每一个实例都有它本身的属性。prototype

        备注:放在代码段里是为了方便测试和学习code

//(1)原型链
        function Animal(name,age) {
            this.name = name;
            this.age = age;
        };
        Animal.prototype.sayHello = function () {
            alert('hello');
        };
        function Dog(name,age) {
            //(2)借用构造函数
            Animal.call(this,name,age);
        }
        Dog.prototype = new Animal();
        Dog.prototype.run = function () {
            alert(this.name);
        }
        var dog = new Dog('huahua',2);
        console.log(dog);
        dog.sayHello();
        dog.run();
        //1)经过原型来实现继承时,原型实际上会变成另外一个类型的实例,原来的实例属性也就变成了如今的原型属性
       // 2)在建立子类型的实例时,不能向超类型的构造函数传递参数。

        //(3)伪经典继承
        // 将原型链和借用构造函数的技术组合在一块儿。
       // 原理是:使用原型链实现对原型属性和方法的继承,而经过借用构造函数实现对实例属性的继承。

继承关系图:对象

相关文章
相关标签/搜索