2010-10-12 3 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

+0

@kangax: Хорошая точка. Я поправляю. –

0

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

Если вы не хотите подвергать свой объект из контекста вы можете сделать что-л так:

var myglobalObject = myglobalObject || {};

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

Отнесение к необъявленной переменной (как вы здесь делаете) вызовет ошибку в ECMAScript 5 строгого режима. Вместо этого используйте инструкцию 'var'. –

+0

Хороший момент, отредактированный. –

Смежные вопросы