虽然了,所谓的给函数扩展成果或要领指的是不修改原函数的条件下. 许多人都知道Mootools面向工具的机制不错,不外大都人都把面向工具领略错了,以为面向工具就是类,着实否则,面向工具的范畴长短常广的.
那么我的这篇文章现实上就是面向工具的一种应用,只不外这个工具是一个function,而并非class.
//给指定Function扩展新的要领或属性 var Fun=function(){ alert('a') }; Fun.extend({ aa:function(){ alert('b'); } }); Fun(); Fun.aa();
在上边这段代码中函数Fun独一的用途就是用来输出a这个字符,此时我们把这个函数领略成是一个工具,那假如我们要给这个函数增进一个新的要领,让他除了能输出a之外还能输出b
因此我就是用了extend对Fun这个工具举办了一次要领扩展,留意扩展之后的要领挪用的时辰会略有差异.
下边的例子同时演示了怎样扩展属性和要领.
var arr=[]; var Fun=function(){ arr=[1,2]; }; Fun.extend({ len:function(){//给Fun扩展属性 return arr.length; }, add:function(val){//给Fun扩展要领 arr.push(val); } });
var a=Fun.len(arr); alert(a+'|'+arr);//此时输出:0|
Fun();//挪用此函数给arr赋值
var a=Fun.len(); alert(a+'|'+arr);//此时输出:2|1,2
Fun.add('新的');
var a=Fun.len(); alert(a+'|'+arr);//此时输出:3|1,2,新的
Fun.add(['a','b','c']);
var a=Fun.len(); alert(a+'|'+arr);//此时输出:4|1,2,新的,a,b,c
len是我扩展的属性,用来取得arr的length数,而add则是一个要领,用来给arr这个array添加新的值
implement是用来给全部的函数扩展要领的,着实很好领略,我们已经知道在Mootools中有pass,bind,delay等等的要领,这些要领都是Mootools为我们预界说的
可是假如你在现实开拓进程中发明他为我们预界说的要领不能满意我们的需求,此时怎么办呢,很简朴,只要本身扩展就好了,看下边:
//扩展新的Function var a=function(){}; var b=function(){}; Function.implement({ alert:function(msg){//直接alert输出内容 alert(msg); }, output:function(msg){//firebug的节制台会输出内容,IE会报错 console.log(msg); } }); a.alert('1'); a.output('2'); b.output('3');
看过这篇文章之后您是否对Mootools的面向工具有了一个新的熟悉呢?
(文章来历:http://see7di.cnblogs.com) (编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|