老式浏览器支持新功能

由于通过原型扩展内建对象是一项非常强大的技术,有了它,我们几乎可以随心所欲地重塑JavaScript语言的能力。但也正是它有如此强大的威力,我们在选择使用这项能力时,就必须慎之又慎。

 

原因在于一旦开发者熟悉了JavaScript,那么他无论在使用哪些第三方库或者工具,他都会预期JavaScript内建对象与方法和他的认知相同。一旦修改了内建对象,他们的行为会发生改变,代码的用户与维护者就会觉得困惑,从而导致无法预期的错误。

 

而JavaScript自身也会发展,浏览器厂商支持的功能会越来越多,没准我们今天所缺失的,想通过原型扩展的功能,明天就会出现在内建方法中。在这种情况下,我们的设计方法就不被需要了。

 

其实,对基于相关内建对象来增加自定义方法这种技术来说,最常用且最能被接受的例子,是实现让老浏览器支持新功能,而且应该是被ECMAScript委员会标准化了的,为现代浏览器所实现的新功能。例如让旧版IE支持ES5中的方法。我们通常把这种扩展叫做shims或者polyfills

posted @ 2016-06-14 15:45  Tome.Wong  阅读(195)  评论(0编辑  收藏  举报