(function($){
$.a.b = {
title: "ABC",
init: function (id) {
/* do something here */
return id+'a';
}
};
})(jQuery);
当我尝试拨打$ .a.b.init('t');它不起作用,我的意思是它没有按预期返回。有什么建议吗?
问题不在于$ .a.b.init('t')无效。问题是它返回整个函数的代码而不是返回一个字符串。
感谢您的时间。
答案 0 :(得分:7)
试
$.a = [];
$.a.b = { ... }
甚至更好:
$.a = {b: {
title: "",
init: ...
}};
使用$.a.b
时,a未定义,因此您无法添加。
答案 1 :(得分:4)
由于尚未定义 $.a
,因此您无法设置 b
属性。首先,您需要创建 $.a
。或者,使用命名空间助手:
$.namespace = function(ns) {
var cur = $, split = ns.split('.');
while (split[0]) {
cur = cur[split.shift()] = {};
}
return cur;
};
$.namespace('a').b = { ... };
它也可以用于更深层的命名空间:
$.namespace('a.b.c.d.e.f').g = 123;
$.a.b.c.d.e.f.g; // => 123