js创建对象的方式

//创建对象方式一 - 普通方式
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());

//采用哪种方式 推荐采用方法五或方法六


你可能感兴趣的:(js创建对象的方式)