我们有一组 javascript «模块» 组织在 «namespaces» — 根植于全局对象(窗口)的对象层次结构。
在某些情况下,我们使用一个实用程序createNs("namespace.name")
(它的工作原理与 YUI 完全一样YAHOO.namespace
),但是我们没有 IntelliSense。ReSharper 也无法解决此类问题。
目前,让 IntelliSense 工作的唯一方法是编写非常麻烦的东西,如下所示:
// module with no dependencies:
(function (window) {
var ourCompany = window.ourCompany || (window.ourCompany = {});
var components = ourCompany.components || (ourCompany.components = {});
var emails = components.emails || (components.emails = {});
emails.inbox = {
checkNew: function () { }
};
})(window);
// consumer:
(function (window) {
window.ourCompany.components.emails.inbox.checkNew();
})(window);
另一种选择是使用jQuery.extend
并不总是可用的方法:
// depends on jquery:
(function (window, $) {
$.extend(true, window, {
ourCompany: {
components: {
emails: {
inbox: {
checkNew: function () { }
}
}
}
}
});
})(window, jQuery);
什么是公分母解决方案?
少写,
有智能,
有 ReSharper 的重构,
没有第三方依赖。
可能吗?
谢谢!