zoukankan      html  css  js  c++  java
  • 如何创建对象

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

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

    (2) 工厂模式

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

    (3) 构造函数模式

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

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

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

    (4) 原型模式

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

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

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

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

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

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

    (6) 动态原型模式

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

    (7) 寄生构造函数模式

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

    (8) 稳妥构造函数模式

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

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

  • 相关阅读:
    echarts 柱状图移除圆角
    echarts 图例显示到右边
    css图片文字一排
    linux磁盘分区、挂载、查看
    mysql的sql筛选排重最大值并修改其属性
    Java调用Linux下的shell命令并将结果以流的形式返回
    SHELL脚本中执行SQL语句操作MYSQL的5种方法
    在 Mac 上使用 `sed` 命令的几个坑
    Linux sed命令实现替换文本内容
    docker ps -a
  • 原文地址:https://www.cnblogs.com/microcosm/p/6505992.html
Copyright © 2011-2022 走看看