Definindo uma versão independente de implementação do objeto global em JavaScript
Estou tentando definir oglobal
objeto em JavaScript em uma única linha da seguinte maneira:
var global = this.global || this;
A declaração acima está no escopo global. Portanto, nos navegadores, othis
ponteiro é um alias para owindow
objeto. Supondo que seja a primeira linha de JavaScript a ser executada no contexto da página da web atual, o valor deglobal
sempre será o mesmo que othis
ponteiro ou owindow
objeto.
Nas implementações do CommonJS, como RingoJS e node.js, othis
apontador aponta para o @ atuModuleScope
. No entanto, podemos acessar oglobal
objeto através da propriedadeglobal
definido noModuleScope
. Portanto, podemos acessá-lo através dothis.global
propriedade.
Portanto, esse trecho de código funciona em todos os navegadores e, pelo menos, no RingoJS e no node.js, mas eu não testei outras implementações do CommomJS. Portanto, gostaria de saber se esse código não produzirá resultados corretos quando executado em qualquer outra implementação do CommonJS e, em caso afirmativo, como posso corrigi-l
ventualmente, pretendo usá-lo em uma expressão lambda para minha estrutura JavaScript independente de implementação da seguinte maneira (idéia do jQuery
(function (global) {
// javascript framework
})(this.global || this);