侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 144688 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

JavaScript中的3种继承方式

2024-04-03 星期三 / 0 评论 / 0 点赞 / 4 阅读 / 2653 字

JavaScript中继承的方式主要有3种; 第一种:原型链继承,通过将子元素的原型指向父元素的实例对象来实现继承; 缺点:字面量重写原型会中断关系,使用引用类型的原型,并且子类型还无法给超类

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

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

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

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

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

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

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

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

        //(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)伪经典继承        // 将原型链和借用构造函数的技术组合在一起。       // 原理是:使用原型链实现对原型属性和方法的继承,而通过借用构造函数实现对实例属性的继承。

继承关系图:

广告 广告

评论区