《javascript设计模式》学习笔记一:创建javascript对象的三种方式

《javascript设计模式》学习笔记一:创建javascript对象的三种方式

前 天刚入手《javascript设计模式》这本书,猛读了一下,颇有感悟,对javascript面向对象的写法有了进一步的了解,也解答了以前困惑良久的问题,萌发了写笔记的想法,想把这本书的精华分享给想要了解javascript设计模式的朋友们。

一、三种创建对象的方式

书上有个例子:启动和停止一个动画,一般面向过程的写法如下:

function startAnimation(){

}

function stopAnimation(){

}

现在把它改写成一个对象

第一种方式:

var Anim = function(){

};

Anim.prototype.start = function(){

};

Anim.prototype.stop = function(){

};

//实例化对象

var myAnim = new Anim();

myAnim.start();

myAnim.stop();

第二种方式:(偶使用的就是这种方式)

var Anim = function(){

};

Anim.prototype = {

    start : function(){

    },

    stop : function(){

    }

};

第三种方式:

Function.prototype.method = function(name,fn){

        this.prototype[name] = fn;

}

var Anim = function(){

};

Anim.method('start',function(){

});

Anim.method('stop',function(){

});

关于prototype原型的解释,我最早接触的是《javascript高级程序设计》里面的说法,但个人觉得还是太简单了,不是很好理解,百度百科里面找到了关于原型的说明,附上网址:

baike.baidu.com/view/1217697.htm

现在来看看三种方式的优缺点:

第一种方式:将二个方法赋予该类的prototype属性(之所以将类的方法放在prototype属性,是为了避免重复创建函数,要使用prototype属性,必须实例化类),但写法上有点繁琐,而且不是很符合一般类的书写习惯,于是就有了第二种方式的改进版。

第二种方式:强烈推荐这种方式,代码简练,清晰,如果有使用过JQ的话,应该会注意到JQ插件的写法就是这种方式。

第三种方式:我还没有使用过,不敢妄下定论,有兴趣的朋友可以用用看看。(这种方式的优势在于链式调用)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值