最近发现之前项目的代码在ie11下没法正常运行,报的错是
对象不支持“startsWith”属性或方法
之后我顺便也试了下endsWith,发现也不行
之前看javascript权威指南时,里面说过可以通过扩展原型方法来添加一些操作
网上找了个链接https://www.jb51.net/article/45419.htm参考下。
我的总体思路是:1.如果浏览器支持startsWith方法,就用原有的;如果不支持,就用自己扩展的(可以通过短路操作||来实现)
2.找的链接里是纯手工实现,我采用正则来进行首尾匹配,代码相对简洁些
修改后的代码如下:
String.prototype.startsWith = String.prototype.startsWith || function (str) {
var reg = new RegExp("^" + str);
return reg.test(this);
}
String.prototype.endsWith = String.prototype.endsWith || function (str) {
var reg = new RegExp(str + "$");
return reg.test(this);
}
把上面的代码放到一个公共js文件里(比如:common.js),然后让这个js在你会用到的startsWith和endsWith的地方之前加载就可以了