Показать сообщение отдельно
  #789 (permalink)  
Старый 30.01.2015, 13:51
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от kobezzza
Почему не просто global? Или у тебя этот скрипт также работает в браузере?
Когда полифил для браузера одновременно является CommonJS модулем, его кто-то может подключить через require в браузере с помощью какого-нибудь Browserify (не знаю зачем это делать в браузере, но так делают).
В браузере модуль оказывается завернутым в дополнительную функцию, поэтому в strict режиме такая обертка для модуля:
(function (global) {
    …
}(this));
оказывается нерабочей.

Например, возьмем все тот же полифил для Promise.
Как тут угодить всем тем, кто:
1. подключает полифил напрямую в браузере и ожидает что глобальный конструктор станет доступен автоматически
<script src="promise.js"></script>
<script>
Promise…
</script>
2. подключает полифил в Node.js:
var Promise = require('es6-promises');
Promise…
3. подключает полифил в Node.js и ожидает что глобальный конструктор станет доступен автоматически
require('es6-promises');
Promise…
4. подключает полифил в Browserify:
var Promise = require('es6-promises');
Promise…
5. подключает полифил в Browserify и ожидает что глобальный конструктор станет доступен автоматически
require('es6-promises');
Promise…
?

Например, в полифиле для setImmediate используется top lvl global.

Последний раз редактировалось Octane, 30.01.2015 в 15:17.
Ответить с цитированием