我将《javascript高级程序设计》的面向对象的程序设计一章又重温了一遍,总结了创建对象的模式有:
1)工厂模式:使用简单的函数创建对象,为对象添加函数和方法,然后返回对象。这个模式解决了创建多个相似对象的问题,但没有解决对象识别的问题。
2)构造函数模式:可以创建自定义引用类型,可以像创建内置对象实例一样使用new操作符。使用new操作符需要经历的4个步骤有:创建一个新对象;将构造函数的作用域赋给新对象(因此this指向了这个新对象);执行构造函数中的代码(为这个新对象添加属性);返回新对象。不过构造函数无法使每个成员得到复用,包括函数。由于函数可以不局限于任何对象,因此没有理由不再多个对象间共享函数。
3)原型模式:使用构造函数的prototype属性来指定那些应该共享的属性和方法。组合使用构造函数模式和原型模式时,使用构造函数定义实例的属性,使用原型定义共享的属性和方法。