我有一些'namespaced'语法:
var APP = {};
然后我有:
APP.one_sub_app = function () {}
etc.
我创建APP对象的实例,然后将它们添加到APP。
APP.my_instance = new APP.one_sub_app();
我想将我的所有应用程序保留在APP中。好的,我的应用运行正常。现在我应用一个将APP更改为Z的uglifier。我需要一种方法来知道Z是APP,因为(例如)我需要一种方法来处理Z(真的是APP)。我需要一种方法来检查任何对象的父级是否是APP或其他对象。
使用Z.constructor.name获取名称可能是解决方案,但在我的情况下,Z(APP)是一个未命名的对象。
有什么方法可以解决这个问题?我不想创建自定义属性,因为我可能正在寻找的其他外部实例可能没有我的自定义属性。以任何方式创建具有相同名称的全局对象的“autoinstance”?
答案 0 :(得分:0)
要防止通过minifier重命名命名空间变量,请将其设置为全局,例如通过在外部(之前)声明立即调用的函数,命名空间函数定义在:
var APP = {};
(function() {
APP.foo = function() {/* ... */};
APP.bar = function() {/* ... */};
})();
或只使用window.APP = {};
代替var APP = {};
。