嗨 這是很好的做法,建立一個獨特的全球對象,包裹裏面這個功能和性能object.I查找了大量的示例代碼和看到這樣的如何定義在javascript
代碼的新的全球目標if(!myglobalObject) myglobalObject ={};
但是,此代碼不能正常工作,我得到了一個錯誤說 的ReferenceError:myglobalObject沒有定義 任何人都瞭解爲什麼我得到了錯誤一些輕?
嗨 這是很好的做法,建立一個獨特的全球對象,包裹裏面這個功能和性能object.I查找了大量的示例代碼和看到這樣的如何定義在javascript
代碼的新的全球目標if(!myglobalObject) myglobalObject ={};
但是,此代碼不能正常工作,我得到了一個錯誤說 的ReferenceError:myglobalObject沒有定義 任何人都瞭解爲什麼我得到了錯誤一些輕?
爲了避免錯誤在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 = {};
}
if (window['myglobalObject'] === undefined) window.myglobalObject = {};
如果你不希望暴露的情況下你的對象,你可以做水木清華這樣的:
var myglobalObject = myglobalObject || {};
if (typeof myglobalObject === 'undefined') var myglobalObject = {};
分配到一個未聲明的變量(如你在這裏做什麼)將在ECMAScript中5嚴格模式下會導致錯誤。改用'var'語句。 – 2010-10-12 11:05:35
好點,編輯。 – 2010-10-12 11:07:36
說到嚴格模式,在嚴格模式下,第二個片段中的'globalObj'將評估爲'undefined'。所以'var globalObj = this'(來自全局代碼)可能是更好的選擇。 – kangax 2011-02-10 08:06:51
@kangax:好點。我會修改。 – 2011-02-10 09:17:42