1、工厂模式
函数内创建一个对象,给对象赋予属性及方法再将对象返回即可
例:
缺点:无法识别每个实例对象的类型,均为Object类型,因此出现了构造函数模式。
2、构造函数模式
例:
缺点:每次创建实例的时候都要重新创建一次方法(理论上每次创建对象的时候对象的属性均不同,而对象的方法是相同的),然而创建两次完全相同的方法是没有必要的。
3、原型模式
使用原型对象的好处就是可以让所有对象实例共享它所包含的属性及方法
例:
缺点:,原型模式的最大问题在于共享的本性所导致的,由于共享,因此因此一个实例修改了引用,另一个也随之更改了引用。因此我们通常不单独使用原型,而是结合原型模式与构造函数模式。
4、混合模式(原型模式 + 构造函数模式)
通常将共有属性和方法定下在prototype对象中,私有属性和方法定义在父类型构造函数中。
例:
混合模式中构造函数模式用于定义实例属性,而原型模式用于定义方法和共享属性。每个实例都会有自己的一份实例属性,但同时又共享着方法,最大限度的节省了内存。另外这种模式还支持传递初始参数。优点甚多。这种模式在ECMAScript中是使用最广泛、认同度最高的一种创建自定义对象的方法。
5、动态原型模式
动态原型模式将所有信息封装在了构造函数中,而通过构造函数中初始化原型(仅第一个对象实例化时初始化原型),这个可以通过判断该方法是否有效而选择是否需要初始化原型。
例: