Symbol.match

Symbol.match 指定了匹配的是正则表达式而不是字符串。String.prototype.match() 方法会调用此函数。

Symbol.match 属性的属性特性:
writable false
enumerable false
configurable false

描述

此函数还用于标识对象是否具有正则表达式的行为。比如, String.prototype.startsWith()String.prototype.endsWith()String.prototype.includes() 这些方法会检查其第一个参数是否是正则表达式,是正则表达式就抛出一个TypeError。现在,如果 match symbol 设置为 false(或者一个 假值),就表示该对象不打算用作正则表达式对象。

示例

禁止表达式检查

下面代码会抛出一个 TypeError

"/bar/".startsWith(/bar/); 

// Throws TypeError, 因为 /bar/ 是一个正则表达式
// 且 Symbol.match 没有修改。

但是,如果你将 Symbol.match 置为 false,使用 match 属性的表达式检查会认为该象不是正则表达式对象。startsWithendsWith 方法将不会抛出 TypeError

var re = /foo/;
re[Symbol.match] = false;
"/foo/".startsWith(re); // true
"/baz/".endsWith(re);   // false

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Symbol.match
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
Symbol.match
Draft  

浏览器支持

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 50 40 (40) 未实现 未实现 未实现
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 未实现 未实现 40.0 (40) 未实现 未实现 未实现

相关链接

文档标签和贡献者

 此页面的贡献者: Ende93
 最后编辑者: Ende93,