Определение независимой от реализации версии глобального объекта в JavaScript

Я пытаюсь определитьglobal объект в JavaScript в одну строку следующим образом:

var global = this.global || this;

Вышеупомянутое утверждение находится в глобальной области видимости. Следовательно в браузерахthis указатель является псевдонимом дляwindow объект. Предполагая, что это первая строка JavaScript, которая будет выполнена в контексте текущей веб-страницы, значениеglobal всегда будет такой же, как уthis указатель илиwindow объект.

В реализациях CommonJS, таких как RingoJS и node.js,this указатель указывает на текущийModuleScope, Тем не менее, мы можем получить доступ кglobal возражать через собственностьglobal определены наModuleScope, Следовательно, мы можем получить к нему доступ черезthis.global свойство.

Следовательно, этот фрагмент кода работает во всех браузерах и, по крайней мере, в RingoJS и node.js, но я не тестировал другие реализации CommomJS. Поэтому я хотел бы знать, не даст ли этот код правильных результатов при запуске в любой другой реализации CommonJS, и если да, то как я могу это исправить.

В конце концов, я намереваюсь использовать его в лямбда-выражении для моей независимой от реализации структуры JavaScript следующим образом (идея из jQuery):

(function (global) {
    // javascript framework
})(this.global || this);

Ответы на вопрос(3)

Ваш ответ на вопрос