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");
});
请把你的疑问评论在下方。

浙公网安备 33010602011771号