输入图片描述

篇文章大家分享js继承中的 寄生式继承

web前端tips:js继承——寄生式继承

今天大家分享一下 js 继承中的 寄生组合式继承

寄生组合式继承

寄生组合式继承是一种结合寄生式继承组合式继承方式,它的目标是减少组合式继承中多余的调用父类构造函数的开销。在组合式继承中,我们通过调用父类构造函数两次实现属性的继承,但这样做可能会导致一些性能上的问题

寄生组合式继承通过创建一个中间对象来继承父类的原型,从而避免了调用父类构造函数两次。以下是寄生组合式继承的实现方式

基本步骤

  1. 创建一个中间对象,该对象原型为父类的原型
  2. 将中间对象构造函数指向子类
  3. 子类原型设置为中间对象
  4. 进行调用继承。
function inheritPrototype(child, parent) {
  // 创建一个中间对象,该对象的原型为父类的原型
  var prototype = Object.create(parent.prototype);
  // 将中间对象的构造函数指向子类
  prototype.constructor = child;
  // 将子类的原型设置为中间对象
  child.prototype = prototype;
}

function Parent(name) {
  this.name = name;
  this.colors = ['red', 'blue', 'green'];
}

Parent.prototype.sayName = function() {
  console.log(this.name);
};

function Child(name, age) {
  Parent.call(this, name);
  this.age = age;
}

inheritPrototype(Child, Parent);

var child1 = new Child('Tom', 5);
child1.colors.push('black');
console.log(child1.name); // 输出 "Tom"
console.log(child1.age); // 输出 5
console.log(child1.colors); // 输出 ["red", "blue", "green", "black"]
child1.sayName(); // 输出 "Tom"

var child2 = new Child('Jerry', 4);
console.log(child2.name); // 输出 "Jerry"
console.log(child2.age); // 输出 4
console.log(child2.colors); // 输出 ["red", "blue", "green"]
child2.sayName(); // 输出 "Jerry"

通过这种方式,子类就能够继承父类的原型链上的属性方法,而不需要调用两次父类构造函数。这种方式避免了组合继承中的性能问题,使得继承更加高效。

优点

缺点

总体来说,寄生组合式继承是一种在继承中相对合理选择,特别是在要求继承父类原型链上方法和避免组合式继承性问题的情况下。在实际应用中,选择继承方式时需要根据具体情况进行权衡和取舍。如果在现代环境下,可以考虑使用 ES6 的 class 语法实现继承。

结语

牵手 持续为你分享各类知识软件 ,欢迎访问关注讨论 并留下你的小心心❤

原文地址:https://blog.csdn.net/weixin_58582793/article/details/134718634

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46878.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

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