Exiu reg函数和use函数

这个函数离得reg函数和use函数神鬼莫测 要多学习
$.extend(X, {

    _cls: {},
    /**
     * 为指定类或对象注册一个短命名标识,便于在其它地方通过{@link use}方法返回该类实例或该对象。<br/>
     * @param {String} shortcut 标识,即该类的缩略名
     * @param {Function|Object} target 类或对象
     * @param {Boolean} [override] 默认如果已存在同名对象会抛出异常,但通过设置本标记可强制重定义类
     * @return clazz
     */
    reg: function (n, cls, override) {

        if (this._cls[n] !== undefined && !override) {
            if (__debug) console.trace();
            throw '已定义类' + n;
        }
        this._cls[n] = cls;

        return cls;
    },

    /**
     * 使用短名类,可以将某个类或类实例通过{@link #reg}方法放到Exiu对象缓存中,
     * 在任何地方调用本方法获得已缓存对象。
     * @param {Object} name 根据键查找缓存对象
     * @param {Object} [config] 假如缓存值为一个类(Function),以config为参数实例化该类
     * @return {Object} 如果缓存的是一个类(Function),返回该类实例,否则直接返回缓存对象
     */
    use: function (n) {
        // instance( type, config )
        var cls = this._cls[n];
        if (cls) {
            // object only
            if (typeof cls === 'object')
                return cls;
            // instance class
            var cfg = arguments[1];
            if (typeof cfg === 'function')
                return new cls(cfg(cls.prototype));
            return new cls(cfg);
        }
        return null;
    },

    /**
     * 检测当前页面是否为指定模块的页面。
     * 通过BigPipe实现模块加载后该方法已被废弃。
     * @param {String} page
     * @param {Boolean}
     */
    isModule: function (name) {
        return this.getModule() === name;
    },

    /**
     * 返回当前页面模块名称
     * @return {String}
     */
    getModule: function () {
        if (this._mod === undefined)
            this._mod = this.getCfg('page') || '';
        return this._mod;
    }
});

 这个函数的递推为真最后返回所需要的值,值得学习

  get : function(name){
        var r = this.getRel(name);
        return r && r.data && r.data[name];
    }

 

 //初始化请求路径
        __gloCfg.apiPath && Req.init(__gloCfg.apiPath);

 

这个函数虽然toString.call(obj)不如直接使用String(obj),不过这种调用方法值得借鉴
return obj && toString.call(obj) === '[object Object]';

 

  $("#nav dl").hover(function () {
                $(this).addClass("hover");
            }, function () {
                $(this).removeClass("hover");
            });

 

$("p").hover(function(){
$("p").css("background-color","yellow");
},function(){
$("p").css("background-color","pink");
});

 

posted @ 2016-08-02 11:05  慕容小凡  阅读(194)  评论(0)    收藏  举报