Symbol.match

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

描述

此函数还用于标识对象是否具有正则表达式的行为。比如,假值),就表示该对象不打算用作正则表达式对象。

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

示例

禁止表达式检查

下面代码会抛出一个 TypeError

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

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

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

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