工厂模式-原型

我需要对一个对象赋值属性,并且要给予一定的方法。使我可以不用重复的创建对象,优化代码,以下为面向过程的工厂模式:

function createPerason(name,age)//构造函数:用来构造对象;
        {
            //原料
            var obj =new Object();

            //加工
            obj.name=name;
            obj.age=age;

            obj.showName=function()
            {
                alert('我的名字是:'+this.name);
            };
            obj.showAge=function()
            {
                alert('我的年龄是:'+this.age);
            };
            //出厂
            return obj;//一定要记得返回出去!!!
        };

        var obj=createPerason('leo','24');//没有new

        obj.showAge();

但是工厂模式有一定的缺陷:
1.没有new。
2.每个对象都有自己的一套不与别人相同的方法,这样会占用大量内存,浪费资源(函数重复定义)。
为了解决以上的问题,并对工厂模式加以改进:

function createPerason(name,age)//构造函数:用来构造对象;
        {
            //系统自动为this创建新的对象
            // var this =new Object();
            this.name=name;
            this.age=age;
            this.showName=function()
            {
                alert('我的名字是:'+this.name);
            };
            this.showAge=function()
            {
                alert('我的年龄是:'+this.age);
            };
            //系统会自动返回this值
        };
        var obj=new createPerason('leo','24');//有new
        obj.showAge();

改进后的工厂模式中,并不需要创建新对象和返回值,这些系统会自动运行,但是在创建新对象的时候,需要new一个新的对象。

为了需要更加方便且节省资源的情况下,我们引出原型这一概念。

原型

原型简单来说就是一个对象的类。

比如说行间样式只能对单一元素进行修改,而类则可以对一部分元素进行修改。
原型也是如此,他可以对一类的对象进行赋值,使得这一类的新建的对象都具有他说带的这些属性。

类:就相当于‘模子’,对象:就相当于产品(成品)。
比如说数组,Array就是类,而arr={}就是对象。

产品只能用,不能用于生产。

混合模式:在构造函数中加属性,通过原型加方法!

function createPerason(name,age)//构造函数:用来构造对象;
        {
            this.name=name;
            this.age=age;
        };
        createPerason.prototype.showName = function()
        {
            alert('我的名字是:'+this.name);
        };
        createPerason.prototype.showAge=function()
        {
            alert('我的年龄是:'+this.age);
        };

        var obj1=new createPerason('leo','24');
        var obj2=new createPerason('tt','23');
        alert(obj1.showAge()==obj2.showAge())true
        obj.showAge();
        obj.showName();true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值