1. 工厂模式
优点:使用工厂模式 解决多次创建对象的问题
缺点:没有解决对象识别的问题 (返回的都是同一个对象类型)
//实例化不同的人
function Factory(name,age,job){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.job = job;
obj.sleep = function() {
console.log(this.name + "在睡觉")
}
return obj;
}
var p1 = Factory("张三",18,"学生");
var p2 = Factory("李四",28,"老师");
var p3 = Factory("王五",48,"校长");
p1.sleep();
p2.sleep();
p3.sleep();
console.log(p1,p2,p3);
2. 原型模式
给构造函数省略属性和方法 (不考虑传递参数) 原型对象上属性所有实例共享
function Person(){
}
Person.prototype = {
constructor:Person,
name:'学生',
age:'18',
sleep:function(){
console.log("在睡觉");
}
}
var p1 = new Person();
p1.job = "打工";
var p2 = new Person();
p2.work = "开车";
console.log(p1, p2);
3. 构造函数模式
没有显示创建对象,没有返回语句 ,直接给this指针上赋属性和方法
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sleep = function (){
}
}
var p = new Person("小明",18,"学生")
console.log(p);//Person {name: "小明", age: 18, job: "学生", sleep: ƒ}
4. 构造+原型模式
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.sleep =