js 构造模式和继承
记录笔记
文章目录
前言
一、构造模式
创建对象的方式:
1.工厂模式:
使用简单的函数创建对象,为对象添加方法和属性,返回对象。后这个模式被构造函数替代
问题:没有类型
2.构造函数:
可以创建自定义的引用类型,可以使用new操作符。缺点每个成员无法复用,包括函数,由于函数不限制于任何对象,因此没有理由不在多个对象间共享函数
问题:单独使用属性和方法不能复用
3.原型模式
使用构造函数的prototype属性来指定那些应该共享的属性和方法
问题:单独使用共享的属性造成问题,无法向构造函数不能传递参数
4.组合构造模式
组合使用构造函数和和原型模式时,使用构造函数定义实例属性,而使用原型定义共享的属性和方法
5.动态构造模式
当实例属性没有,添加原型的属性,更符合oop构造函数的思想
6.寄生构造模式
扩充对象的属性,添加对象的方法和属性
问题:同工厂模式,无法判断类型
7.稳妥继承模式
类似工厂模式,但是返回对象不封装属性,通过暴露方法暴露属性
优点:安全
二、继承
1.原型继承
给对象的原型对象赋值
2.借用构造函数
在构造方法中
调用XX.call(this);
3.组合继承
结合上面两种继承方式
缺点:构造函数需要被调用两次
4.寄生继承
通过拷贝要继承的对象,然后添加方法和属性
5.寄生组合继承
通过拷贝对象的原型到新对象的原型,避免了构造函数调用两次的问题
总结
组合构造函数是默认的构造方式。
寄生组合式继承,集寄生式继承和组合继承的优点与一身,是实现基于类型继承的最有效方式。