面向对象 part6 继承
2024-10-08 15:19:57
继承
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.不能像超类型的构造函数中传递参数。没有办法在不影响实例的情况下。给超类型的构造函数传递参数
原型式继承(实现浅复制)
当没有必要创建构造函数的时候,只想让一个对象与另一个对象保持类似的情况。
不过包含引用值属性始终都会共享相应的值。就像使用原型模式
最新文章
- Oracle的SQL语句中的变量替换
- 闲扯游戏编程之html5篇--山寨版《flappy bird》源码
- 简单的 JSON 对象进行深拷贝最简单的方法
- bash和Bourne_shell的区别
- Java和eclipxe的安装以及第一个程序
- Common Knowledge_快速幂
- BZOJ4382 : [POI2015]Podział naszyjnika
- 安卓界面篇(一) 自定义一个topbar
- left edge algorithm.
- android99 拍照摄像
- 获取UIButton的一些属性
- Baskets of Gold Coins
- 【LeetCode题意分析&;解答】41. First Missing Positive
- 说服式设计(persuasive design)的行为模型
- 常用的HTTP方法
- [转]Android Shape渲染的使用(经典,学习研究不后悔)
- css中盒子宽高的auto
- Centos查看系统CPU个数、核心数、线程数
- what i want
- sqlServer数据库备份与还原——差异备份与还原
热门文章
- tomcat conf目录下server.xml详解
- JAVA基本数据类型和注释
- 剑指offer_2.1_Day_5
- 输入框中提示信息(html5)
- UVA 10054 The Necklace 转化成欧拉回路
- [题解] Luogu P2000 拯救世界
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring基于XML装配Bean
- Android进阶——多线程系列之Semaphore、CyclicBarrier、CountDownLatch
- ETL工具对比
- matplotlib画图--Line Color