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());

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值