首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

extJs 2.1学习札记(Function扩展篇)

2012-10-25 
extJs 2.1学习笔记(Function扩展篇)ExtJs对JavaScript的内建对象进行了扩展,对什么Object、Date、Array、Func

extJs 2.1学习笔记(Function扩展篇)
ExtJs对JavaScript的内建对象进行了扩展,对什么Object、Date、Array、Function、String的扩展,扩展方法想必诸位都烂熟于心了:用prototype的办法。这一篇讲一讲Function扩展的精妙之处,之所以突然研究这个问题,是因为我在研究 Ext.data.Store的源代码时,看到一行代码:

   createInterceptor : function(fcn, scope){        if(typeof fcn != "function"){            return this;        }        var method = this;        return function() {            fcn.target = this;            fcn.method = method;            if(fcn.apply(scope || this || window, arguments) === false){                return;            }            return method.apply(this || window, arguments);        };    }


  这个函数也有点意思,有创意,它返回被调用函数的回调,这个回调是条件执行的,执行条件是createInterceptor传入的那个函数返回真。示例代码如下:

  function A(){}

  var B=A.createInterceptor(function(i){return i>0;});

  B(1),则A被执行,如果调用B(-1),A则不被执行。B的作用就是如果传入的第一个参数的值大于0时A才被执行,否则不执行。

  相当于原有函数的功能不变,只是加个执行条件。这个想法着实巧妙。这一招现在想来,也可以用到c#中。

热点排行
Bad Request.