今天晚些時候,我是通過ejhon.com幻燈片滾動,我發現了以下工作:JavaScript的新的關鍵字和對象作用域
給這個代碼
function katana() {
this.myvar = true;
}
katana();
console.info (myvar);
過去的那一刻我編譯的代碼,我認爲myvar附屬於katana功能。實際上,它會附加到污染全局命名空間的窗口對象。
我回到自己的項目,這些項目都採用同樣的辦法..有點不同
function katana() {
this.myvar = true;
}
var xyz = new katana();
console.info (myvar);
我有一個函數對象,而不是執行的功能,我只是創建它的一個新實例(我並不確定發生了什麼)。然後我使用xyz存儲值並通過原型方法使用這些值來完成一些工作。
讓我感到驚訝的是,當我用FireBug進行一些調試時,xyz並不存在。沒有變量附加到窗口對象。爲什麼?
我做了一些更多的調試,xyz對象連接到window> object,但是在DOM中它並不明顯,也沒有任何痕跡。在調試窗口中還有一些新東西,一個叫做「scopechain」的節點帶有一個調用,它具有xyz對象的值。
好的,底下發生了什麼?這是一種我應該堅持的好方法,還是我應該尋找替代方案? 我看了一些問題和答案,我主要是在尋找這種方法在後臺做什麼。
閱讀本文http://ejohn.org/apps/learn/ – 2010-08-04 19:35:04
其實我正在瀏覽它。我只是尋找更深的解釋,因爲這些幻燈片只顯示結果。 – 2010-08-04 19:42:25