WEB开发网
开发学院网页设计JavaScript javascript设计模式交流 阅读

javascript设计模式交流

 2010-09-14 13:17:22 来源:WEB开发网   
核心提示:本文将讨论Prototype Pattern的js实现,之后讨论javascript的prototype继承和Prototype Pattern的关系,javascript设计模式交流,Prototype Pattern是一种创建型模式,在GoF Book中它的意图被描述成用原型实例指定创建对象的种类,clone方法的

本文将讨论Prototype Pattern的js实现,之后讨论javascript的prototype继承和Prototype Pattern的关系。

Prototype Pattern是一种创建型模式,在GoF Book中它的意图被描述成用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

Prototype Pattern本身实际上非常简单,任何一个提供了clone()方法的对象都可以成为原型对象,所有通过它复制的对象都属于一类对象。在静态语言中,这一模式被用于运行时指定对象类型,相比工厂模式,这一模式无需创建与类层次平行的工厂类结构,实现上要方便得多。

clone的三种js实现

在js中,clone方法的实现并不困难,对js的6种基本类型来说 string boolean undefined null number皆可直接用=赋值,唯一麻烦的是object。

对object 我们可以用clone其所有成员的方式复制 作为方法的函数可以这样定义:

/************************************/
    function objectClone()
    {
        var ret=new Object();
        for(var p in this)
        {
            ret[p]=this[p];
        }
        return ret;
    }

但我们显然面对着一个问题:this[p]也可能是一个object 所以很可能我们需要用递归来实现deepClone

  function objectDeepClone()
    {
        var ret=new Object();
        for(var p in this)
        {
            if(typeof ret[p]!=object)ret[p]=this[p];
            else ret[p]=objectDeepClone.call(this[p]);
        }
        return ret;
    }

1 2 3 4 5 6  下一页

Tags:javascript 设计模式 交流

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接