0

在我过去的项目中,我曾经创建一个 javascript 应用程序对象并创建对 dom 和 dijit 节点的引用。前段时间我读到这会导致垃圾收集出现问题,因为 js 保留了对 dom 的引用(或这些行中的某些内容)

app = {
        // UI - divs
    _divMainView : null,
    _divCurrent : null,
    _divTmSelectContianer : null,
    _divSpSelectContianer : null,
    _loadingMsg : null,
    _loadingOverlay : null,

    // tabs
    _tabs : null,
    _tab1 : null,
    _tab2 : null,

    init : function() {     },
    _initUi : function() { 
        dojo.parser.parse();
                this._divMainView = dojo.byId('main');
                this._tab2 = dijit.byId('tab1');
                // wire up events
        },
    _handleEvent : function() {},
    _doSomething : function() {}
}

我喜欢我过去做事的方式是,节点“id”在代码中只被引用一次。

那么有什么选择呢?每次需要 domNode / dijit 小部件时使用 dojo.ById() 和 dijit.byId() 吗?我能想到的唯一可维护选项是使用小部件/节点 ID 创建“常量”。

4

0 回答 0