-
工厂模式
封装函数,返回一个对象- 优点:解决了创建多个相似对象的问题
- 缺点:没有解决对象识别的问题(怎样知道一个对象的类型)
-
构造函数模式
- 优点:修正了工厂模式的缺点
- 缺点:每个实例都有自己的方法,冗余
原型模式
每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象。
原型对象包含可以由(自定义的引用类型对象的所有实例对象)共享的属性和方法。-
组合使用构造函数模式和原型模式
构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。- 优点:
每个实例都有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。
- 优点:
动态原型模式
在构造函数中初始化原型。寄生构造函数模式
和工厂模式内部代码一模一样,只是包装函数变成了构造函数,需要通过 new 关键字调用。
应用场景:特殊情况下用来为对象创建构造函数。
- 稳妥构造函数模式
新创建的对象的实例方法不引用 this
不使用 new 关键字调用构造函数。