JavaScript 设计工厂模式 ★

工厂模式是一种创建类型的模式,目的是为了简化创建对象的流程,它把对象实例化简单封装在一个函数中,然后通过函数调用,实现快速、批量生产对象。

下面例子创建对象 car,然后给它设置几个属性:它的颜色是蓝色,有2个门,8个轮子。最后一个属性实际上是指向函数的指针,意味着该属性是个方法。执行这段代码后,就可以使用对象 car。

Function createCar(color,doors,wheels){
    var TempCar = new.Object;
    TempCar.color = color;
    TempCar.doors = doors;
    Tempcar.wheels = wheels;
    TempCar.showColor = function(){
        alert(this.color);
    };
    return Tempcar;
}
var car1 = createCar("yellow",2,4);    //Bumblebee
var car2 = createCar("blue",2,8);    //Optimus prime 
car1.showColor();    //输出"yellow"
car2.showColor();    //输出"blue"

本例所有代码都包含在 createCar() 函数中,并返回 car 对象(TempCar)作为函数值。调用此函数,将创建新对象,并赋予它所有必要的属性,复制出一个 car 对象。因此,通过这种方法,可以很容易地创建 car 对象的两个版本(car1 和 car2),它们的属性完全一样。

在上面示例中,每次调用函数createCar(),都要创建新函数 showColor(),意味着每个对象都有自己的 showColor() 版本。而事实上,每个对象都共亨同一个函数。因此可以在工厂函数外定义对象的方法,然后通过属性指向该方法,从而避免这个问题。

function showColor(){
    alert(this.color);
}
Function createCar(color,doors,wheels){
    var TempCar = new.Object;
    TempCar.color = color;
    TempCar.doors = doors;
    Tempcar.wheels = wheels;
    TempCar.showColor = showColor
    return Tempcar;
}
var car1 = createCar("yellow",2,4);    //Bumblebee
var car2 = createCar("blue",2,8);    //Optimus prime 
car1.showColor();    //输出"yellow"
car2.showColor();    //输出"blue"

在上面这段重写的代码中,在函数createCar)之前定义了函数showColor)。在createCar0内部,赋予对象一个指向已经存在的showColor0函数的指针。从功能上讲,这样解决了重复创建函数对象的问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值