常用的初始化实例对象的模式
1. 工厂模式
function makeObj(name, age, job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayAge = function() {
alert(this.age);
};
return o;
}
var a = makeObj("wst", "22", "web")
优点: 能快速的构建大量实例。
缺点: 不能解决对象识别的问题。
2. 构造函数模式
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayAge = function() {
alert(this.age);
};
}
var a = new Preson("wst", "22", "web")
优点: 能快速构建大量, 可以将其实例标识为一种特定类型
缺点: 每个方法都要在每个实例上重新创建一遍
3. 原型模式
function Person() {
}
Person.prototype.name = 'wst';
Person.prototype.age = '22';
Person.prototype.job = 'web';
Person.prototype.sayAge = function() {
alert(this.age);
};
var a = new Preson("wst", "22", "web")
简写
function Person() {}
Person.prototype = {
constructer: Person,
name: "wst",
age: '22',
job: 'web'
};
优点:避免了相同方法的重复构建
缺点:因为其共享的本质,影响到实例拥有自己的全部属性
4.混合模式
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.frisds = ['zkw','lyf'];
}
Person.prototype = {
constructor:Person,
sayName:function (){
alert(this.name);
}
};
var a = new Preson("wst", "22", "web")
使用最广泛,认同度最高,定义引用类型的一种默认模式