/*
      创建对象的四种方式
    */

    /*
      字面量创建
        => var obj = {}
    */

    // let o1 = {
    //   name: 'Jack',
    //   age: 18,
    //   gender: '男'
    // }

    // 当我需要第二个对象的时候
    // let o2 = {
    //   name: 'Rose',
    //   age: 20,
    //   gender: '女'
    // }

    /*
      内置构造函数创建
        => var obj = new Object()
    */

    // let o1 = new Object()
    // o1.name = 'Jack'
    // o1.age = 18

    // 当我想创建第二个对象的时候
    // let o2 = new Object()
    // o2.name = 'Rose'
    // o2.age = 20


    /*
      工厂函数创建对象
        1. 先自己做一个工厂函数
        2. 使用自己做的工厂函数来创建对象
    */

    // 1. 创建一个工厂函数
    // function createObj(name, age, gender) {
    //   // 1-1. 手动创建一个对象
    //   let obj = {}

    //   // 1-2. 手动添加成员
    //   obj.name = name
    //   obj.age = age
    //   obj.gender = gender

    //   // 1-3. 手动返回这个对象
    //   return obj
    // }

    // 2. 使用工厂函数创建对象
    // 创建第一个对象
    // let o1 = createObj('Jack', 18, '男')
    // console.log(o1)

    // 创建第二个对象
    // let o2 = createObj('Rose', 20, '女')
    // console.log(o2)


    /*
      自定义构造函数创建
        1. 自己书写一个构造函数
        2. 使用构造函数创建对象

      构造函数
        + 就是普通函数, 没有任何区别
        + 只有在你调用的时候和 new 关键字连用, 才有构造函数的能力
          => 只要你和 new 关键字连用 this => 当前对象(new 前面的那个变量名)
    */

    // 1. 创建一个构造函数
    function createObj(name, age, gender) {
      // 1-1. 自动创建一个对象

      // 1-2. 手动向对象上添加内容
      this.name = name
      this.age = age
      this.gender = gender

      // 1-3. 自动返回这个对象
    }

    // 2. 创建对象
    let o1 = new createObj('Jack', 18, '男') // 本次调用的时候, 函数内部的 this 就指向 o1
    console.log(o1)

    let o2 = new createObj('Rose', 20, '女')
    console.log(o2)

 

posted on 2021-08-26 16:20  phantom_yy  阅读(130)  评论(0)    收藏  举报