kobezzza,
Ну в частности меня интересует окно браузера/воркер/нода function foo ( func ) { ??? } foo( function ( global, envType ) { // global -> global object // envType -> 'window' / 'worker' / 'node' }); Как сделать это максимально корректно? |
Ну, обычно хватает:
(function (global) { })(this); В окне и потоке this - это будет ссылка на глобальный объект. В окружении ноды this - это ссылка на exports, а доступ к глобальному объекту доступен через ссылку global, но при написании модулей как правило нужен именно exports. В node-webkit насколько мне известно вcё также, как и в окне браузера. Варианты для логического определения: var isWorker = typeof window === 'undefined' && typeof importScripts !== 'undefined'; var isNode = typeof window === 'undefined' && typeof global !== 'undefined'; Это не 100% гарантия, ибо в той же ноде можно сделать: global.window = {}; И всё сломается, но тот, кто так делает - сам виноват :) |
Цитата:
<script> или как модуль Nodejs<script> typeof require → "function" typeof setImmediate → "undefined" typeof global.setImmediate → "function" typeof postMessage → "function" Модуль typeof require → "function" typeof setImmediate → "function" typeof global.setImmediate → "function" typeof postMessage → "undefined" |
Цитата:
Насчет глобального объекта нашел такое Function('return this')()А потом подумал: как я сам до этого не допер? :) Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
проверка на существование
if(value == null){ } нубы....... А реверенс исключения не надо избегать тайпофом, это плохой стиль. |
Часовой пояс GMT +3, время: 15:50. |