对象创建模式:
方式一: Object构造函数模式
先创建空Object对象,再动态添加属性方法
适用场景:起始时不确定对象内部数据
问题: 语句太多
var obj = new Object()
obj.name = "XXX"
obj.age = 18
obj.gender = "男"
方式二: 对象字面量模式
使用{ }创建,通时指定属性与方法
适用场景: 起始时对象内部数据是确定的
问题:如果创建多个对象,有重复代码
var obj = {
obj.name = "XXX"
obj.age = 18
obj.gender = "男"
}
方式三:工厂模式
通过工厂函数动态创建对象并返回
使用场景:需要创建多个对象
问题:对象没有一个具体的类型,都是Object类型
function creatPreson(name,age,gender){
var obj = {
name:name
age:age
gender:gender
}
return obj
}
var p = creatPreson("XXX",18,"男")
方式四:自定义构造函数模式(相同属性方法依旧放在函数内)
自定义构造函数,通过new创建对象
适用场景: 需要创建多个类型确定的对象
问题:每个对象都有相同的数据,浪费内存
function Person(name,age,gender){
this.name = name
this.age = age
this.gender = gender
this.changeName = function(name){
this.name = name
}
}
var p = new Person("XXX",18,"男")
方式五:方式四的升级版(相同属性方法放在原型内)
function Person(name,age,gender){
this.name = name
this.age = age
this.gender = gender
this.prototype.changeName = function(name){
this.name = name
}
}
var p = new Person("XXX",18,"男")