ECMAScript第五版(2009年12月发布)引入了一些新的方法(详见本表 )。 但是,那里还有一些旧的浏览器没有实现这些新的方法。 幸运的是,存在一个方便的脚本(用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方法,根据上面链接的兼容性表,当实现ECMAScript 5方法时, bind是“最后的堡垒”。 当然,为了使这个垫片有效,它必须在所有其他脚本之前执行,这意味着我们希望在页面的早期(在HEAD中,在所有其他SCRIPT元素之前)包含上述SCRIPT元素。 那么,这个第二个例子是一个向浏览器提供ECMAScript 5-shim的好方法吗? 有没有更好的方法来做到这一点?