2010-12-04 62 views
0

我有这个定义的TabListJavaScript的范围混乱

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不保留在对象内部吗?

如果此代码独立如上,我可能会错过一些—我想简单地把它尽我所能为示范的目的。

+0

@Agile通常你想用`return this;`结束构造函数。我不认为这有什么不同,但这是一个很好的做法(从我听到的)。 – 2010-12-04 01:16:44

+0

@敏感`private`变量不应该在`add`函数的局部范围内 - 它在外部范围内(TabList`构造函数的范围)。 – 2010-12-04 01:18:39

回答

2

由于关闭属性,该变量肯定应该在add()函数中可用。

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