В пятом издании ECMAScript (выпущено в декабре 2009 года) представлено несколько новых методов (подробности см. В этой таблице ).Однако все еще существуют старые браузеры, которые не реализуют эти новые методы.
К счастью, существует удобный скрипт (написанный на JavaScript) - ES5-shim - который реализует эти методы вручную в средах, где их нет.
ОднакоЯ не уверен, как обеспечить ES5-шим ... Должен ли я просто "дать" его всем браузерам, например так:
<script src="es5-shim.js"></scipt>
Или я должен включить проверку, чтобы только "беспокоить"те браузеры, которые действительно нуждаются в этом, например так:
<script>
if ( !Function.prototype.hasOwnProperty( 'bind' ) ) {
(function () {
var shim = document.createElement( 'script' );
shim.src = 'es5-shim.js';
var script = document.getElementsByTagName( 'script' )[0];
script.parentNode.insertBefore( shim, script );
}());
}
</script>
(я использую Function.prototype.bind
, чтобы проверить, реализует ли браузер все новые методы ECMAScript 5. В соответствии с таблицей совместимости, которую я связал выше, bind
- это «последний бастион», когда дело доходит до реализации методов ECMAScript 5.)
Конечно, для того, чтобы эта прокладка была эффективной, она должна быть выполнена перед всеми другими сценариями,Это означает, что мы хотим включить вышеупомянутые элементы SCRIPT в начале страницы (в HEAD, перед всеми другими элементами SCRIPT).
Итак, этот второй пример будет хорошим способом обеспечить ECMAScript 5-shimбратанwsers?Есть ли лучший способ сделать это?