Symbol.match
Symbol.match
指定了匹配的是正则表达式而不是字符串。String.prototype.match()
方法会调用此函数。
尝试一下
描述
此函数还用于标识对象是否具有正则表达式的行为。比如, String.prototype.startsWith()
,String.prototype.endsWith()
和 String.prototype.includes()
这些方法会检查其第一个参数是否是正则表达式,是正则表达式就抛出一个TypeError
。现在,如果 match
symbol 设置为 false
(或者一个 假值),就表示该对象不打算用作正则表达式对象。
Symbol.match 的属性特性 |
|
---|---|
可写 | 否 |
可枚举 | 否 |
可配置 | 否 |
示例
禁止表达式检查
下面代码会抛出一个 TypeError
:
js
"/bar/".startsWith(/bar/);
// Throws TypeError,因为 /bar/ 是一个正则表达式
// 且 Symbol.match 没有修改。
但是,如果你将 Symbol.match
置为 false
,使用 match
属性的表达式检查会认为该对象不是正则表达式对象。startsWith
和 endsWith
方法将不会抛出 TypeError
。
js
var re = /foo/;
re[Symbol.match] = false;
"/foo/".startsWith(re); // true
"/baz/".endsWith(re); // false
规范
Specification |
---|
ECMAScript Language Specification # sec-symbol.match |
浏览器兼容性
BCD tables only load in the browser