该新特性属于 ECMAScript 2015(ES6)规范,在使用时请注意浏览器兼容性。
Summary
endsWith()
方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true
或 false
。
Syntax
str.endsWith(searchString [, position])
;
参数
searchString
- 要搜索的子字符串。
position
- 在 str 中搜索 searchString 的结束位置,默认值为
str.length
,也就是真正的字符串结尾处。
示例
var str = "To be, or not to be, that is the question."; alert( str.endsWith("question.") ); // true alert( str.endsWith("to be") ); // false alert( str.endsWith("to be", 19) ); // true alert( str.endsWith("To be", 5) ); // true
Polyfill
/*! https://mths.be/endswith v0.2.0 by @mathias */ if (!String.prototype.endsWith) { (function() { 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` var defineProperty = (function() { // IE 8 only supports `Object.defineProperty` on DOM elements try { var object = {}; var $defineProperty = Object.defineProperty; var result = $defineProperty(object, object, object) && $defineProperty; } catch(error) {} return result; }()); var toString = {}.toString; var endsWith = function(search) { if (this == null) { throw TypeError(); } var string = String(this); if (search && toString.call(search) == '[object RegExp]') { throw TypeError(); } var stringLength = string.length; var searchString = String(search); var searchLength = searchString.length; var pos = stringLength; if (arguments.length > 1) { var position = arguments[1]; if (position !== undefined) { // `ToInteger` pos = position ? Number(position) : 0; if (pos != pos) { // better `isNaN` pos = 0; } } } var end = Math.min(Math.max(pos, 0), stringLength); var start = end - searchLength; if (start < 0) { return false; } var index = -1; while (++index < searchLength) { if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { return false; } } return true; }; if (defineProperty) { defineProperty(String.prototype, 'endsWith', { 'value': endsWith, 'configurable': true, 'writable': true }); } else { String.prototype.endsWith = endsWith; } }()); }
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) String.prototype.endsWith |
Standard | Initial definition. |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 未实现 | 17 (17) | 未实现 | 未实现 | 未实现 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 未实现 | 未实现 | 17.0 (17) | 未实现 | 未实现 | 未实现 |