说在前面:JS其实不是面向对象的编程语言
JS继承
面向对象的三大特征:
(1)封装: 将功能相同的属性和方法 写在一起, ‘低耦合,高内聚’;
Date() Math number String write() window document Location
(2)继承 : extend ----> Java
是指 自己没有的东西 从别人 拿过来
Animal 父类 : eat,sleep,play,run…
Dog cat tiger…
父类与子类之间的关系 类与类之间的关系
在js中没有类的概念, 是通过构造函数 原型实现继承
继承可以实现数据共享, 优化内存, 节省资源
(3)多态: 主要针对 强类型的语言, 在js中目前不存在
多种状态的存在
是指 父类的引用 指向子类的对象;
在JavaScript中,继承就是当前对象可以使用其他对象的方法和属性。
继承 是指一种关系,是类与类之间的关系, 但是js中没有类这个概念,js是通过构造函数模拟类,然后通过原型来实现继承.
继承也是为了数据共享
原型作用之一: 数据共享,节省内存空间
原型作用之二: 为了实现继承
最简单的继承实现:直接遍历父对象的属性,将所有的属性添加到当前对象上
var animal={name='flash'};
var dog={};
for(var k in animal){
dog[k]=animal[k];
}
每一个构造函数都有prototype原型属性,通过构造函数创建出来的对象都继承自该原型属性.所以可以通过更改构造函数的原型属性来实现继承.
1.给原型对象中添加成员(通过对象的动态特性)不是严格意义上的继承
2.直接替换原型对象
3.利用混入的方式 给原型对象添加成员