什么叫传承定义,传承和流传的区别

首页 > 教育 > 作者:YD1662024-05-04 01:04:16

什么叫传承定义,传承和流传的区别(1)

这里介绍的是ES6之前的继承方式,没有写 class 继承哦。

什么是继承

继承是指一个对象直接使用另一对象的属性和方法。

js中继承的方法有:原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生式组合继承

1. 原型链继承

(1). 原型、构造函数和实例的关系

function Person() { } Person.prototype var p = new Person();

构造函数:Person

属性:prototype => 指向原型对象

原型对象:Person.prototype

属性:constructor => 指向构造函数

原型、构造函数和实例的关系:

什么叫传承定义,传承和流传的区别(2)

出现上面那个结果的原因是,实例是没有constructor这个属性的,p.constructor其实是访问的p.prototype.constructor,但是由于我们用对象字面量的方式重写了Person.prototype,所以会顺着原型链往上找,找到Object.prototype.constructor.

什么叫传承定义,传承和流传的区别(3)

(2). 原型链

如(1)中所示,如果让(1)中的原型对象成为另外一个类型的实例,以此类推,便构成了原型链。

注意:所有构造函数的默认原型都是Object的实例,因此默认原型会有一个prototype指针指向Object.prototype。

(3). 原型链继承

主要思想是:通过设定一种类型的原型是另一种类型的实例来继承另外一种类型。

例如:B要继承A

创建A的实例:new A();

让其等于B的原型:B.prototype = new A(); //B则继承了A里面所有的属性和方法

原型搜索机制:以读取方式访问一个实例属性时,在该实例中搜索该属性,若没有找到再搜索实例的原型,顺着原型链往上找。

代码示例如下:

什么叫传承定义,传承和流传的区别(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.