如何创建对象

(1) object构造函数或对象字面量

        使用同一个接口创建很多对象,会产生大量的重复代码

(2) 工厂模式

      用函数封装,特定接口创建对象,函数中只有return可以将值暴露 缺点:没有解决如何识别对象类型这一问题

(3) 构造函数模式

      使用this暴露属性,new创建对象,没有return语句。并且可以将构造函数的实例标识为一种特定的类型,可以使用instanceof识别。

       缺点:每个方法都需要在每个实例上重新创建。

      解决方法:可以将共同的方法创建在全局中,或者使用原型模式

(4) 原型模式

     每个函数都有一个prototype(原型)的属性,这个属性是一个指针,指向一个对象。该对象可以在prototype属性中定义所有实例共享的属性和方法。

      性质:动态性,在原型中查找值的过程是一次搜索,对原型对象所做的任何修改都能从它的实例中反应出来。

      优点:所有的对象实例共享原型所包含的属性和方法。

      缺点:实例在默认情况下取得相同的属性值 当通过任意一个实例修改原型属性的值时,其他实例对应的属性值也会发生改变。

(5) 组合使用构造函数模式和原型模式

       构造函数用于定义实例属性,原型模式用于定义方法和共享属性。

(6) 动态原型模式

       通过检查某个应该存在的方法是否有效,来决定是否初始化原型

(7) 寄生构造函数模式

       创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后返回新创建的对象。 除了使用new操作符以外,其他和工厂模式相同,特殊情况下为对象创建构造函数。

(8) 稳妥构造函数模式

      没有公共属性,而且其方法也不引用this的对象

      适用场合:创建对象的实例不引用this;在相对安全的环境(禁止使用this和new)

posted on 2017-03-05 17:02  公子小苏  阅读(594)  评论(0编辑  收藏  举报