2010-10-12 49 views
1

嗨 這是很好的做法,建立一個獨特的全球對象,包裹裏面這個功能和性能object.I查找了大量的示例代碼和看到這樣的如何定義在javascript

代碼的新的全球目標
if(!myglobalObject) myglobalObject ={}; 

但是,此代碼不能正常工作,我得到了一個錯誤說 的ReferenceError:myglobalObject沒有定義 任何人都瞭解爲什麼我得到了錯誤一些輕?

回答

2

爲了避免錯誤在ECMAScript中5嚴格模式,你需要使用var來定義所有變量:

if (typeof myglobalObject == "undefined") { 
    var myglobalObject = {}; 
} 

另一種方法是將財產分配給全局對象:

// The following line gets you a global object in any ECMAScript 
// environment, so long as it runs in the global scope. In browsers, 
// you could just use window. 
var globalObj = this; 
if (typeof globalObj.myglobalObject == "undefined") { 
    globalObj.myglobalObject = {}; 
} 
+0

說到嚴格模式,在嚴格模式下,第二個片段中的'globalObj'將評估爲'undefined'。所以'var globalObj = this'(來自全局代碼)可能是更好的選擇。 – kangax 2011-02-10 08:06:51

+0

@kangax:好點。我會修改。 – 2011-02-10 09:17:42

0

if (window['myglobalObject'] === undefined) window.myglobalObject = {};

如果你不希望暴露的情況下你的對象,你可以做水木清華這樣的:

var myglobalObject = myglobalObject || {};

2
if (typeof myglobalObject === 'undefined') var myglobalObject = {}; 
+0

分配到一個未聲明的變量(如你在這裏做什麼)將在ECMAScript中5嚴格模式下會導致錯誤。改用'var'語句。 – 2010-10-12 11:05:35

+0

好點,編輯。 – 2010-10-12 11:07:36