码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象 part6 继承

时间:2019-11-17 01:02:36      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:包含   nbsp   实例   bsp   之间   依赖   原型继承   通过   sub   

继承

js实现的是实现继承/也就是继承实际的方法

//主要依赖:原型链

//基本思路: 就是一个引用类型继承另一个引用类型的属性和方法

详细:构造函数,实例,原型之间的关系。每个构造函数都有一个原型对象,原型对象都包含一个指针指向构造函数

每个实例都包含一个内部指针指向原型。假如我们让一个原型对象等于宁一个类型的实例。此时的原型对象将包含一个

内部指针指向另一个原型。以此类推。。。

默认的原型

所有引用类型都默认继承了Object。而这个继承也是通过原型链实现的。

所有函数的默认原型都是Object的实例

这也就是为什么所有自定义类型都会继承toString()等默认方法。

谨慎定义方法

继承的时候

子类重写原型中的方法会屏蔽原型的方法。但是不改变原型中的这个方法

子类调用是新方法,原型调用还是原来的方法

原型继承的时候,不要使用字面量方法,字面量方法会重写原型链

原型链的问题

1.引用类型的值问题

 

 function SuperType() = {
this.colors = ["red", "blue"]
}

function SubType() = {}
//继承了SuperType 
//同时生成一个超类的实例
//该实例是调用了超类构造函数
//也就是同时调用了超类构造函数中的this
//SubType.prototype.colors = ["red", "blue"]
SubType.prototype = new SuperType()

var instance1 = new Subtype()
//此时调用的是原型中color
//修改的同时会反应在其他实例
instance1.colors.push("black")

var instance2 = new SubType()
instance2.color // "red, blue,black"

 

2.不能像超类型的构造函数中传递参数。没有办法在不影响实例的情况下。给超类型的构造函数传递参数

 原型式继承(实现浅复制) 

当没有必要创建构造函数的时候,只想让一个对象与另一个对象保持类似的情况。

不过包含引用值属性始终都会共享相应的值。就像使用原型模式

 

面向对象 part6 继承

标签:包含   nbsp   实例   bsp   之间   依赖   原型继承   通过   sub   

原文地址:https://www.cnblogs.com/-constructor/p/11874842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!