十五、类和对象进阶
1.复习:值类型和引用类型
值类型在调用方法传递是,传的是值
数组是引用类型
2.原型对象
prototype属性是类的原型对象
通常情况下,我们习惯将类的方法,定义到类的原型对象中,这样做的好处是,提高代码的利用率,不会开辟多余的内存空间。
__proto__属性是对象的原型对象,注意:同种类型多个对象上的原型对象 共同指向 类型上的原型对象。
类的原型对象上面的方法,类的对象,可以直接调用
如果将方法直接定义在类里面,将来根据这个类创建的每个对象,都要创建自己独立的这些方法
如果要创建很多对象,对内存的开销会很大。
可以将类的方法,添加到类的原型对象身上
2.2查看String和Array的原型对象
定义一个字符串,本质上它是一个对象
既然是对象,就一定要有一个__proto__的原型对象
采用字符串的构造函数去创建字符串对象
扩展日期的方法(返回格式:yyyy-mm-dd hh:mm:ss)
创建JS文件
3class定义类
这是ES6之前,定义类型的方式
从ES6以后,添加了class关键字,定义类型
注意:该语法的兼容性不高,ie9以下都不支持,部分其他低版本的浏览器也存在兼容性问题。
4.继承
定义动物类
定义动物的方法
创建一个动物对象
定义一个狗狗类
将Dog类的原型对象改成一个Animal对象
狗狗特有的方法
创建一个狗狗对象
定义一个猫咪类
继承Animal的方法
猫咪特有的方法
ES6的继承方式
定义动物类
创建一个动物对象
定义狗狗类class关键字,定义类;extends关键字继承类,
采用这种方式,Animal的方法,此刻已经全部继承过来了。