JavaScript创建对象的方法
创建对象
字面量方式创建对象
const obj = {
name: 'sifan',
age: '21'
}
缺点,一次创建多个对象的时候重复代码太多,过于复杂
工厂模式
function Person(name, age) {
const obj = new Object()
obj.name = name
obj.age = age
obj.sayName = () => {
console.log(obj.name)
}
return abj
}
const obj = new Person('sifan', 21)
const obj2 = new Person('sifan2', 22)
console.log(typeof obj) // Object
console.log(typeof obj2) //object
缺点:非常明显,就是不知道创建的新对象是什么类型的(person)
构造函数模式
构造函数是用于创建特定类型对象的,所以可以用来自定义构造函数来创建自定义类型的对象
function Person(name, age) {
this.name = name
this.age = age
this.sayName = function() {
console.log(this.name)
}
}
let person1 = new Person('sifan', 21)
let person2 = new Person('sifan2', 22)
构造函数于工厂模式的区别主要于以下三点:
- 没有显示的创建对象
- 属性和方法直接辅助给了this
- 没有return
那么使用new的过程中经历了什么呢? - 创建一个对象
- 将对象的[[prototype]]赋值构造函数prototype属性
- 将this指向新创建的对象
- 执行构造函数中的代码,给新对象添加属性
- 如果构造函数返回了其他对象,那么这个对象作废,否则返回新创建的这个对象(没怎么懂)
行百里者半九十