创建对象的多种方法

93 阅读1分钟
  1. 最正规且最基本的方法但是比较麻烦
let person = new Object()
person.age = 18
person.name = "派派"
person.hello = function() {
    console.log('你好我是' + this.name)
}
  1. 对象字面量,看起来更直观
let person = {
    age: 18,
    name: "派派",
    hello: () => {
        console.log('你好我是' + this.name)
    }
}
  1. 工厂模式
  • 缺点:person1 instanceof createPerson === false,工厂模式创建出来的对象没法标识,不知道对象的出处是哪里。
function createPerson(age, name) {
    let person = new Object()
    person.name = name
    person.age = age
    person.hello = () => {
        console.log('你好我是' + this.name)
    }
    return person
}
let person1 = createPerson(18, "派派")
let person2 = createPerson(17, "派翠克")
  1. 构造函数模式(使用new来调用) person1 instanceof createPerson === true
function Person(age, name) {
    this.name = name
    this.age = age
    this.hello = () => {
        console.log('你好我是' + this.name)
    }
}
let person1 = new Person(18, "派派")
let person2 = new Person(17, "派翠克")
  1. class
class Person {
    constructor(age, name) {
        this.name = name
        this.age = age
        this.hello = () => {
            console.log('你好我是' + this.name)
        }
    }
}
let person1 = new Person(18, "派派")
let person2 = new Person(17, "派翠克")