JavaScript范围混乱

时间:2010-12-04 01:11:23

标签: javascript scope

我有TabList的定义:

MyApp.TabList = function (selector) {

    var private = {
        $list: $(selector),
        tabs: []
    };

    this.add = function (tab) {
        private.tabs.push(tab);
    };
};

但是,当我打电话给这个时,并且在this.add的正文中,private没有出现在本地范围内:

MyApp.tabs = new MyApp.TabList("#tabs");

$("#tab-add").click(function() {
    MyApp.tabs.add(new MyApp.Tab("title"));
});

private是否未保留在对象内?

如果这段代码如上所述单独工作,我可能会错过一些东西 - 我试图将其作为示范用途的最佳方法。

1 个答案:

答案 0 :(得分:2)

由于 closure 属性,该变量应该在add()函数中可用。

这可能不是答案,但private是一个Javascript关键字。您应该尝试避免将其用作变量的名称。它可能会导致未知的错误,有时调试器也无济于事。试一试,让我们知道它是否有效!