//创建对象方式一 - 普通方式
var car1 = new Object();
car1.name = '奔驰';
car1.color = 'red';
car1.desc = function(){
return this.name + '-' + this.color;
}
//alert(car1.desc());
//创建对象方式二 - 工厂模式
function createCar(name, color){
var car = new Object();
car.name = name;
car.color = color;
car.desc = function(){
return this.name + '-' + this.color;
}
return car;
}
var car2 = createCar('宝马', 'black');
var car3 = createCar('大众', 'yellow');
//alert(car2.desc());
//alert(car3.desc());
//创建对象方式三 - 构造方法
function Car(name, color){
this.name = name;
this.color = color;
this.desc = function(){
return this.name + '-' + this.color;
}
}
var car3 = new Car('奥迪', 'blue');
//alert(car3.desc());
//创建对象方式四 - 原型方法
function NewCar(){
}
NewCar.prototype.name = '长城';
NewCar.prototype.color = 'green';
NewCar.prototype.desc = function(){
return this.name + '-' + this.color;
}
var car4 = new NewCar();
//alert(car4.desc());
//创建对象方式五 - 混合的构造函数和原型方法【用构造函数定义对象的所有非函数属性,用原型定义对象的函数属性】
function MyCar(name, color){
this.name = name;
this.color = color;
}
MyCar.prototype.desc = function(){
return this.name + '-' + this.color;
}
var car5 = new MyCar('QQ', 'grey');
var car6 = new MyCar('奥拓', 'red');
//alert(car5.desc());
//alert(car6.desc());
//创建对象方法六 - 动态原型方法
function MyNewCar(name, color){
this.name = name;
this.color = color;
if(typeof MyNewCar._initialized == 'undefined'){
MyNewCar.prototype.desc = function(){
return this.name + '-' + this.color;
};
MyNewCar._initialized = true;
}
}
var car7 = new MyNewCar('比亚迪', 'blue');
//alert(car7.desc());
//采用哪种方式 推荐采用方法五或方法六