JS - 自定义构造函数

94 阅读1分钟
创建对象的方式 (需要能够方便我们批量创建对象)
  1. 字面量方式
let obj = {
    name: 'abc'
    age: 18
}
console.log(obj)
  1. 内置构造函数
let obj = new Object()
obj.name = 'abc'
obj.age = 18
console.log(obj)
  1. 工厂函数
let createObj(num){
    // 3.1: 手动创建一个对象
    let obj = {}
    //3.2: 手动给对象添加一些属性
    obj.name = 'abc' // 这个相当于是一个固定的字符串,每次打印的值都是这个
    obj.age = num  // 利用形参给对象的属性值赋值一个变量
    
    return obj  // 手动返回对象
}
let obj = createObj(18)
console.log(obj)
  1. 自定义构造函数
let Person(name,age) {
    // 自动创建一个对象
    // 手动给对象添加一些属性
    this.name = name
    this.age = age
    // 自动返回对象
}
let obj = new Person('abc',18)
console.log(obj)
自定义构造函数的一些注意点:
    1. 函数名首字母大写,主要是为了和普通函数做一个区分
    2. 调用的时候使用 new 关键字,如果不使用 new,那么和普通函数没有区别
    3. 函数内部不要书写 return,会自动返回一个对象,
        如果在函数内部return了一个普通数据类型,那么普通数据类型不会被返回,
        如果 return 了一个复杂数据类型,那么构造函数会没有意义
    4.函数内部的 this 指向,
        当一个函数和 new 关键字连用的时候,我们称为构造函数,
        然后这个函数内部的 this 指向的是这次调用函数被自动创建出来的那个对象