javascript全局对象实例名称

时间:2016-07-07 17:30:15

标签: javascript

我有一些'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”?

1 个答案:

答案 0 :(得分:0)

要防止通过minifier重命名命名空间变量,请将其设置为全局,例如通过在外部(之前)声明立即调用的函数,命名空间函数定义在:

var APP = {};

(function() {
    APP.foo = function() {/* ... */};
    APP.bar = function() {/* ... */};
})();

或只使用window.APP = {};代替var APP = {};