# 组合替代继承:JavaScript中的一种策略
在JavaScript中,继承是实现代码复用和扩展的重要机制,尤其是在面向对象编程中。不过,传统的原型继承有时会因其复杂性和局限性而导致困惑。为了解决这些问题,许多开发者选择混合和组合的方式替代纯粹的继承,这就是“组合替代继承”策略。本文将深入探讨这一策略,讲解其概念、优缺点,并提供示例代码。
## 什么是组合替代继承?
组合替代继承的核心
// 工具方法:继承原型function inherit(superPro,subPro){ const prototype = Object.create(superPro.prototype); Object.defineProperty(prototype,'constructor',{ value:superPro, enumerable...
原创
2021-09-02 14:01:34
109阅读
1、基本概念子类继承父类,但是不能影响父类。包括1.混合继承(构造函数+原型) 2.ES6新增class的继承。接下来介绍,面向对象中继承的两种常用写法。即混合继承(构造函数+原型)和class继承。推荐class继承需要用到的知识点,构造函数、原型与原型链。(1)构造函数:构造函数是函数、也是类。通过new调用,产生实例对象。通过实例对象访问对象下面具有的属性和方法。(构造函数内部的属
转载
2023-12-24 10:13:34
57阅读
1 继承的基本概念继承是指一个对象直接使用另一对象的属性和方法js里常用的如下三种继承方式:
通过原型链方式实现继承(对象间的继承)
类式继承(构造函数间的继承)
组合继承
由于js不像Java那样是真正面向对象的语言,js是基于对象的,它没有类的概念。所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现。2 程序中的继承方法1 原型继承/**
转载
2023-07-22 12:10:11
48阅读
前言继承,作为复用代码的一种有效手段,在面向对象编程中有着重要意义。但是这门脚本语言的确不像某些静态语言那样提供了真正意义上的基于类实现的继承方式,而是采用了一种基于原型的继承。这里将说说在ES5时,使用JavaScript来实现继承的几种方式。 在具体讲这些方式之前,先预先说清楚几个概念。函数:在JavaScript中,通常每一个函数上都会有一个prototype对象,假如我们通过new这个操作
转载
2024-06-03 20:23:04
57阅读
继承与组合都是面向对象中代码复用的方式,了解各自有什么特点,可以让我们写出更简洁的代码,设计出更好的代码架构。 这是一篇翻译文章,作者是serhiirubets“我应该怎么使用继承和组合”这是一个常见的问题,不仅是JavaScript相关,但是本篇我们只讨论JavaScript相关的内容和示例。如果你不知道什么是*组合*或*继承*,我强烈推荐你去查看相关内容,因为本文的主要讲的就是怎么使用
翻译
2022-04-28 14:15:01
132阅读
JavaScript学习(五十五)—组合继承组合继承:就是借用构造方法继承和原型链继承的组合形式
原创
2022-07-01 11:11:20
71阅读
function Parent(name){ this.name=name; } Parent.prototype.getName=function(){ return hit.name; } function Child(){ //在这里调用父级构造方法,其中一个实例对象修改属性,另外一个属性值也 ...
转载
2021-10-06 22:42:00
157阅读
2评论
一 原理 组合继承仅仅是同时使用了原型链继承和构造函数继承。具体做法是,将父类的实例作为子类的构造函数的原型对象,并在子类的构造函数中调用父类的构造函数。 function Fruit(name){ th...
转载
2018-12-28 15:10:00
40阅读
2评论
一 原理 组合继承仅仅是同时使用了原型链继承和构造函数继承。具体做法是,将父类的实例作为子类的构造函数的原型对象,并在子类的构造函数中调用父类的构造函数。 function Fruit(name){ th...
转载
2018-12-28 15:10:00
33阅读
2评论
在ES6之前类的继承终极大招寄生组合式继承一、改写原型继承function inheritObject(o) { function F() { } F.prototype = o; return new F(); }二、创建继承组合式继承/** * subClass 子类 * superClass父类
原创
2021-06-15 15:58:09
193阅读
//父类:人 function Person () { this.head = '脑袋瓜子'; this.emotion = ['喜', '怒', '哀', '乐']; //人都有喜怒哀乐 } //将 Person 类中需共享的方法放到 prototype 中,实现复用 Person.prototy ...
转载
2021-10-14 21:12:00
125阅读
2评论
面向对象设计有一个原则“优先使用对象组合,而不是继承”。 下面是两者优缺点的比较: 组 合 关 系 继 承 关 系 优点:不破坏封装,整体类与局部类之间松耦合,彼此相对独立 缺点:破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性 优点:具有较好的可扩展性 缺点:支持扩展,但是往 Read More
转载
2018-05-19 03:57:00
180阅读
2评论
今天看《JavaScript高级程序设计》一书中关于组合继承模式时。书上有这么一个Demo程序: <html> <head> </head> <body> <script> function SuperType(name){ this.name = name; } SuperType.prototy
转载
2019-03-16 10:57:00
60阅读
2评论
扩展行为是我们作为开发人员在很多不同的语言和编程范例中做了很长时间的事情。但是,一场争议就在我们眼前进行,只有极少数人真正地注意到了这一点:你应该通过继承来实现,还是通过组合来扩展和添加新的行为?这是两种非常古老的技术,乍一看可以获得相同的结果,然而,在一些经验丰富的开发人员看来是有差异的,我在这里给他们作出一些解释。
原创
2021-07-13 10:00:47
150阅读
扩展行为是我们作为开发人员在很多不同的语言和编程范例中做了很长时间的事情这两个概念并不是全新的,但在我学习编程的时候,我认为如果需要扩展行
原创
2022-01-18 11:10:41
82阅读
掌握JavaScript继承的精髓:原型继承、构造函数继承以及组合继承的实现技巧
一、原型链继承将父类的实例作为子类的原型function Parent() { this.isShow = true
this.info = { name: "yhd", age: 18,
};
}
Parent.prototype.getInfo = function() { console.log(this.info); console.log
转载
2021-01-23 12:21:01
714阅读
2评论