是否对浏览器的本机功能支持进行静态检查?

时间:2014-10-23 14:54:28

标签: javascript cross-browser static-analysis

我想知道是否有一个静态检查程序会查看我的javascript源代码并告诉我哪些本机函数不应该使用或使用不同的方法,如果我希望我的脚本能够跨浏览器工作。

例如,Chrome不知道String.contains(),但Firefox确实知道String.contains()。我希望得到警告,我应该完全避免Array.sort()

另一个例子是Number的使用,如果你的比较函数返回boolean,它只能在浏览器中正常工作。所有浏览器也会接受{{1}}值,但在这种情况下行为不一致。关于返回类型的警告会很棒。 (分析将会更加复杂,甚至可能无法实现。)

有人知道静态检查器会警告本机功能的“非ECMA”使用情况。我搜查了但没找到任何东西。

1 个答案:

答案 0 :(得分:1)

您正在寻找它的称为polyfill或polyfiller。它是检查浏览器上现有行为或功能的代码。如果该特征不存在,则polifill实现它。

http://en.wikipedia.org/wiki/Polyfill

此实现的一个示例是Modernizr。 https://github.com/Modernizr/Modernizr

https://github.com/robertkowalski/contains.js/blob/master/contains.js

上的String.contains方法示例
if (typeof String.prototype.contains == 'function') {
  return;
}
String.prototype.contains = function(value, pos) {
   var string = this;
   ... implementation ...
}