ECMAScript Fifth Edition (2009 년 12 월 출시)에는 많은 새로운 방법이 도입되었습니다 (자세한 내용은 this table 참조). 그러나, 거기에 아직도 그 새로운 방법을 구현하지 않는 오래된 브라우저가 있습니다.ECMAScript 5 (ES 5) 제공 방법 -shim?
다행히 편리한 스크립트 (JavaScript로 작성) - ES5-shim이 있습니다.이 스크립트는 존재하지 않는 환경에서 수동으로 구현합니다.
그러나, 나는 ES5 - 심 (shim)을 제공하는 방법 ... 난 그냥과 같이, 모든 브라우저에 "제공"해야 확실하지 않다 :
<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>
(나는 브라우저가 모든 새로운 ECMAScript를 5 개 메소드를 구현 있는지 확인하는
Function.prototype.bind
을 사용하고 내가 위의 링크 된 호환성 테이블에 따르면,
bind
이 : 정말 필요 그래서 같은 그 브라우저가 "방해" ECM 구현에 관한 "마지막 요새" AScript 5 개 방법.) 물론
이 심 효과적 일을 위해, 그것은 전에 을 실행해야 우리가에서 (초기 페이지에서 위에서 언급 한 SCRIPT 요소를 포함 할 것을 의미 다른 모든 스크립트, HEAD, 다른 모든 SCRIPT 요소보다 먼저).
이렇게 두 번째 예제는 ECMAScript 5-shim을 브라우저에 제공하는 좋은 방법일까요? 그것을 할 수있는 더 좋은 방법이 있습니까?
을하지만 (즉, 크롬, 파이어 폭스, 곧 오페라 최신) 다운로드하고 불필요하게 웹 페이지 속도가 느려집니다 심의를 실행 ES5 호환 브라우저를 강제 . 약간의 JavaScript 확인으로이 문제를 피할 수 있다면 기꺼이 해보겠습니다. –
@ imeVidas : 8kB입니다. 적절한 캐싱을 사용하면 걱정할 필요가 없습니다. – You
성능 저하는 무시할 수 있습니다. ES5 Shim은 불필요한 코드 실행을 피하기 위해 이미 할 수있는 일을합니다. – JaredMcAteer