Javascript 框架之担任机制
猛火网(LieHuo.Net)教程 大一点的框架都有这个对象。Prototype原本的担任机制很是弱,为了与mootools反抗也强化了这一方面。嘛,要用原型担任来仿照类担任,都根基存在一个克隆函数。把父类的原型属性复制到子类上去。理念的对象暂且这么多,下手实践一下最现实。我们计一律个数组类,拥有原生数组的手段与新扩展的手段。
很显然这是工场要领,天生的原生数组,假如要扩展而不污染原生数组就又要再加一重包装。我们看担任是奈何实现的。这涉及到两个类,原生数组类与新数组类。先看代码:
因为javascript的原型链的相关,我们不能直接var Array2 = Array;var a = new Array2;这样一旦从Array2的原型添加新要领(添加要领都提议往原型里加,不提议做成类要领)时,Array的原型也被加上了,由于它们是在统一条船上。我们必需断开它们。于是我们必要一个Parent函数做桥接。我们可以说Array为方针父类,Parent为真正父类。先把方针父类的原型赋给Parent的原型,这样Parent就拥有其全部果真的要领,然后我们再把这些要领赋给Array2。但这时Array2的实例的constructor 仍为原生的数组,我们要批改一下。我们可以拜见下图看Prototype与constructor的相关。 我们再把部门代码抽取出来做成一个要领: Copy to Clipboard![]() var bridge = function() {}; bridge.prototype = klass.prototype; return new bridge; } Array2 = function(){}; Array2.prototype = makeBridge(Array); Array2.prototype.constructor = Array2;
上面的_mixin要领是最常见的担任要领,早期的Prototype也是依赖来拷贝原型要领,冠冕堂皇地称之为extend,并且什么也环境也不思量。在Ext这里分成几种环境apply,applyif,override。在mootools中则叫add。
可是这样做照旧不爽,由于我们照旧必要手动配置var Tiger = function(){}这个空函数,这个下回再说。 作者博客:http://www.cnblogs.com/rubylouvre/ (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |