我心飞扬

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  11 随笔 :: 50 文章 :: 5 评论 :: 0 Trackbacks
Ext对JavaScript的几个基本类进行了扩展。
它们是 Function, String, Array, Date和Number.

Function加入了回调、拦截和代理机制等。
为什么要加入这些机制呢,使用起来的时候方便些吗?

createCallback(),可以 为原来的函数创建 回调函数。
把参数传进去。
var sayHello = function(name) {...}
一些 handler函数,必须是无参 函数吗? 使用 sayHello.createCallback('jack'),就会创建一个新的函数对象。这个对象的定义形式应该是:
function() {
    sayHello('jack');
}  // 就是这种所谓的回调机制吗?
(没有传参数的话,把函数引用放到 handler 后面就可以了。 如果要传参数,在handler后直接放func(args),则解析后函数会马上调用,而不是事件触发时才调用的回调函数了。。。。 所以如果传参一定要用createCallback()方法, 为什么一定要如此,JS语法的局限性?)

    createCallback : function(/*args...*/){   // createCallback函数也开始变得容易理解了。
        // make args available, in function below
        var args = arguments;
        var method = this;                           // Ext中,已经对Function进行扩展,所以所有的函数对象都可以使用 createCallback()方法创建回调函数?
        return function() {                            // 最后返回的确实是一个函数对象。只不过把参数绑定到 被回调的函数了
            return method.apply(window, args);    //  为什么限定 的范围是window,window貌似在JS起很重要的作用,在多个地方看到了。 href转向的时候也要用到这个的。  还有JS本身的apply机制,这些底层机制都是有必要了解的。
        };
    }

对这几个类的扩展,完全在Ext.js这个文件中体现出来了。对 Function的扩展结构如下所示:
Ext.apply(Function.prototype, {
    createCallback: function() { ...},
    createDelegate: function(obj, args, appendArgs) { ...},
    defer: function(millis, obj, args, appendArgs) {...},
    createSequence: function(fcn, scope) {...},
    createInterceptor: function(fcn, scope) {...}
})  // 很多加入的函数也是有参数的。 Ext.apply在 这里就是把 函数加到 Function的原型中去吗?  这样所有 函数都具备了以下的几个扩展方法?
Ext.apply和 JavaScript本身的apply有什么关系?

 (function() {
  alert('immediate');
 })();  // 这种代码风格是强制执行用的? Ext.js中,就把一些扩展代码写在这种代码段中。原以为只要把函数包在()中就可以,居然还要在末尾加上()

Ext.apply(Ext, { ... }) // Ext扩展,可以直接用 { ... }声明一个很大的对象,来扩展Ext?  apply 三个参数的函数Ext.js里面有定义,两个参数的没有见到

posted on 2009-08-15 22:27 Monicax 阅读(1032) 评论(0)  编辑 收藏 引用 所属分类: ExtJS Home
只有注册用户登录后才能发表评论。