工厂模式
function createObject(name,age){
var obj = new Object() //创建对象
obj.name = name ; //添加属性
obj.age = age;
obj.run = function(){ //添加方法
return this.name+this.age+"运行中"
}
return obj; //返回对象引用
}
var bo1 = createObject("Lee",100) //创建对象
var bo2 = createObject("Jack",200)、
alert(box1.run());
alert(box2.run());
//构造函数
function Box(name,age){ //创建对象,所有构造函数的对象就是Object
this.name = name; //添加属性
this.age = age ;
this.run = function(){ //添加方法
return this.name+this.age+"运行中"
};
}
//1.构造函数没有new Object 但后台会自动 var obj = new Object
//2.this就相当于obj
//3.构造函数不需要返回对象引用,后台自动返回的
//1.构造函数也是函数,但函数名第一个字母大写
//2.必须new构造函数名(), new Box(),而这个Box第一个字母也是大写
//3.必须使用new运算符
var box1 = new Box("Lee",100); //实例化
var box2 = new Box("Jack",200);
//构造函数
function Box(name,age)
this.name = name; //实例属性
this.age = age;
this.run = function(){ //实例方法
return this.name+this.age+"运行中"
}
//原型 (共享)
function Box(){} 构造函数函数体内什么都没有 这里如果有 叫做实例属性 实例方法
Box.prototype.name = "Lee";
Box.prototype.age = 100;
Box.prototype.run = function(){
return this.name+this.age+“运行中”
}
var box1 = new Box();
var box2 = new Box();
alert(box1.run())
//如果是实例方法,不同的实例化,他们的方法地址是不一样的,是唯一的
//如果是原型方法,他们的地址是共享的,大家都是一样的
alert(box1.run == box2.run);