Ну, обычно хватает:
(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 = {};
И всё сломается, но тот, кто так делает - сам виноват