我想知道是否有一个静态检查程序会查看我的javascript源代码并告诉我哪些本机函数不应该使用或使用不同的方法,如果我希望我的脚本能够跨浏览器工作。
例如,Chrome不知道String.contains()
,但Firefox确实知道String.contains()
。我希望得到警告,我应该完全避免Array.sort()
。
另一个例子是Number
的使用,如果你的比较函数返回boolean
,它只能在浏览器中正常工作。所有浏览器也会接受{{1}}值,但在这种情况下行为不一致。关于返回类型的警告会很棒。 (分析将会更加复杂,甚至可能无法实现。)
有人知道静态检查器会警告本机功能的“非ECMA”使用情况。我搜查了但没找到任何东西。
答案 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 ...
}