zoukankan      html  css  js  c++  java
  • JS对象创建模式

    JS的对象创建模式

    1.Object构造函数模式

    1 var person = new Object();
    2 
    3 person.name = 'name';
    4 person.age = 43;
    5 
    6 console.log(person);

    分析:

    1   * 套路: 先创建空Object对象, 再动态添加属性/方法
    2   * 适用场景: 起始时不确定对象内部数据
    3   * 问题: 语句太多

    2.对象字面量

    1 var person1 = {
    2   name:'person1',
    3   age:41
    4 }
    5 
    6 var person2 = {
    7   name:'person2',
    8   age:2
    9 }

    分析:

    1   * 套路: 使用{}创建对象, 同时指定属性/方法
    2   * 适用场景: 起始时对象内部数据是确定的
    3   * 问题: 如果创建多个对象, 有重复代码

    3.工厂模式

     1 function Person(name,age){
     2 
     3   return {
     4     name: name,
     5     age: age
     6   }
     7 }
     8 
     9 var person1 = new Person('person1',4);
    10 var person2 = new Person('person2',5);

    分析:

    1   * 套路: 通过工厂函数动态创建对象并返回
    2   * 适用场景: 需要创建多个对象
    3   * 问题: 对象没有一个具体的类型, 都是Object类型

    4.自定义构造函数模式

    1 function Person(name,age){
    2 
    3   this.name = name;
    4   this.age = age;
    5 }
    6 
    7 var person1 = new Person('person1',55);

    分析:

    1   * 套路: 自定义构造函数, 通过new创建对象
    2   * 适用场景: 需要创建多个类型确定的对象
    3   * 问题: 每个对象都有相同的数据, 浪费内存

    5.构造函数加原型的组合模式

     1     function Person(name, age) {
     2 
     3       this.name = name;
     4       this.age = age;
     5     }
     6 
     7     Person.prototype.eat = function(){
     8       console.log('person eat');
     9     }
    10 
    11     var person1 = new Person('person1', 55);
    12 
    13     person1.eat();

    分析:

    1   * 套路: 自定义构造函数, 属性在函数中初始化, 方法添加到原型上
    2   * 适用场景: 需要创建多个类型确定的对象
  • 相关阅读:
    JS事件学习笔记(思维导图)
    [logstash-input-file]插件使用详解
    echarts折线图,纵坐标数值显示不准确的问题解决
    IDEA 创建maven jar、war、 pom项目
    Lombok介绍、使用方法和总结
    Springboot2.0访问Redis集群
    springboot2.x 整合redis集群的几种方式
    SpringBoot 2.x 使用Redis作为项目数据缓存
    Springboot2.x使用redis作为缓存
    SpringBoot中application.yml基本配置详情
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12005264.html
Copyright © 2011-2022 走看看