构造函数继承与class继承
构造函数继承
1、子类通过apply方法或者call方法把this指向父类
js代码
function Parent(name, age) {
this.name = name
this.age = age
}
Parent.prototype.init = function(){
console.log(this.name, this.age)
}
function Son(name, age) {
Parent.apply(this, [name, age]) //子类通过apply方法或者call方法把this指向父类
}
这种方法继承了父类的属性,然而并没有继承父类原型上方法
2、把父类实例对象赋值给子类原型
js代码
function Parent(name, age) {
this.name = name
this.age = age
}
Parent.prototype.init = function(){
console.log(this.name, this.age)
}
function Son(name, age) { }
Son.prototype = new Parent() //把父类实例对象赋值给子类原型
Son.prototype.constructor = Son //严谨起见,不写也不会影响效果
这虽然继承了父类原型方法,但是却没有继承父类属性
把1、2这两者综合一下就是构造函数的组合继承了,这样就实现了继承父类的方法和属性
js代码
function Parent(name, age) {
this.name = name
this.age = age
}
Parent.prototype.init = function(){
console.log(this.name, this.age)
}
function Son(name, age) {
Parent.call(this,name,age) //子类通过apply方法或者call方法把this指向父类
}
Son.prototype = new Parent() //把父类实例对象赋值给子类原型
Son.prototype.constructor = Son //严谨起见,不写也不会影响效果
组合继承:缺点,实现继承的过程中调用了两次父类实例
class继承
1、通过extends关键字继承父类原型方法,super方法继承父类属性,
js代码
class Parent{
constructor(name,age) {
this.name = name
this.age = age
}
init(){
console.log(this.name,this.age)
}
}
class Son extends Parent{ //extends关键字继承父类原型方法
constructor(name,age) {
super(name,age) //super方法继承父类属性
}
}
new Son('张三',18).init()
构造函数继承与class继承的更多相关文章
- javascript实现继承3种方式: 原型继承、借用构造函数继承、组合继承,模拟extends方法继承
javascript中实现继承的三种方式:原型继承.借用构造函数继承.混合继承: /* js当中的继承 js中 构造函数 原型对象 实力对象的关系: 1 构造函数.prototype = 原型对象 2 ...
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
一.本文目的与说明 1. 本文目的:理清在各种继承时,构造函数.复制构造函数.赋值操作符.析构函数的执行顺序和执行内容. 2. 说明:虽然复制构造函数属于构造函数的一种,有共同的地方,但是也具有一定的 ...
- 第32节:Java中-构造函数,静态方法,继承,封装,多态,包
构造函数实例 class Cat{ // 设置私有的属性 name private String name; // 设置name的方法 public void setName(String Name) ...
- 深入浅出javascript(十二)继承——构造函数继承和组合继承
#题记: 有一水果类,抽象出属性包括:name(水果品种),price(价格),id(ID号).现有两个子类,分别为苹果,桔子,希望继承水果父类. 一.构造函数继承 构造函数继承相当把父类的属性在子类 ...
- JS原型、原型链、构造函数、实例与继承
https://cloud.tencent.com/developer/article/1408283 https://cloud.tencent.com/developer/article/1195 ...
- java中继承,子类是否继承父类的构造函数
java中继承,子类是否继承父类的构造函数 java继承中子类是不会继承父类的构造函数的,只是必须调用(隐式或者显式) 下面来看例子: public class TestExtends { publi ...
- JS继承之原型继承
许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...
- Lua面向对象----类、继承、多继承、单例的实现
(本文转载)学习之用,侵权立删! 原文地址 http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...
- C++对象模型:单继承,多继承,虚继承
什么是对象模型 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分.对于各种支持的底层实现机制. 类中成员分类 数据成员分为静态和非静态,成员函数有静态非静态以及虚函数 clas ...
- C++ 多继承和虚继承的内存布局(转)
转自:http://www.oschina.net/translate/cpp-virtual-inheritance 警告. 本文有点技术难度,需要读者了解C++和一些汇编语言知识. 在本文中,我们 ...
随机推荐
- 小程序使用模板template
小程序使用模板template 1.介绍:模板就是代码的高度复用,将在很多页面使用了相同的部分可以使用模板封装 <!-- 在页面组件中使用 --> <!-- 此时定义了一个模板 -- ...
- 在IntelliJ IDEA中创建和运行java/scala/spark程序
本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介 ...
- Java并发编程实战 05等待-通知机制和活跃性问题
Java并发编程系列 Java并发编程实战 01并发编程的Bug源头 Java并发编程实战 02Java如何解决可见性和有序性问题 Java并发编程实战 03互斥锁 解决原子性问题 Java并发编程实 ...
- Python的概述
官网:https://www.python.org/ 诞生:1989年底诞生,1990年V1发布,2000年V2发布,2008年V3发布(不兼容V2),2017年随着AI的崛起而流行 特点:简单.跨平 ...
- kubernetes pod的弹性伸缩———基于pod自定义custom metrics(容器的IO带宽)的HPA
背景 自Kubernetes 1.11版本起,K8s资源采集指标由Resource Metrics API(Metrics Server 实现)和Custom metrics api(Promet ...
- 如何在HTML5中使用SVG
复制而来---原地址http://www.php100.com/html/webkaifa/HTML5/2012/0731/10776.html SVG 即 Scalable Vector Graph ...
- 用window.print()打印如何去掉页眉和页脚
用window.print()打印如何去掉页眉和页脚 2007-07-12 11:44:52| 分类: javascript 知识|举报|字号 订阅 <script language= ...
- Java集合(八)哈希表及哈希函数的实现方式
Java集合(八)哈希表及哈希函数的实现方式 一.哈希表 非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的 ...
- (七)剩余DAO代码
AccountDAO.java package com.aff.bookstore.dao; import com.aff.bookstore.domain.Account; public inter ...
- string 去重复
//AABB>>AB //AAA>>A //ABBAA>ABA public static string SpiltString(stri ...