この記事は編集レビューを必要としています。ぜひご協力ください。
よく知られたSymbol.matchシンボルは文字列に対して正規表現のマッチングを指定します。この関数はString.prototype.match() メソッドによって呼ばれます。
Symbol.match のプロパテイ属性 |
|
|---|---|
| 書込可能 | 不可 |
| 列挙可能 | 不可 |
| 設定可能 | 不可 |
説明
この関数はオブジェクトが正規表現の振る舞いをもつかどうか識別するためにも使用されます。例えば、String.prototype.startsWith()、String.prototype.endsWith()、String.prototype.includes()メソッドは最初の引数が正規表現かどうか調べます。その場合TypeErrorをスローします。現在、matchシンボルがfalse(またはFalsy値)に設定されたら、そのオブジェクトが正規表現オブジェクトとして使用されることが意図されていないことを示しています。
例
isRegExpチェックを無効にする
次のコードはTypeErrorをスローします。
"/bar/".startsWith(/bar/);
// Throws TypeError, as /bar/ is a regular expression
// and Symbol.match is not modified.
しかしながら、Symbol.matchをfalseに設定した場合、(matchプロパティを使用する)isRegExpチェックはオブジェクトが正規表現オブジェクトではないことを示します。結果としてstartsWithメソッドとendsWithメソッドはTypedErrorをスローしなくなります。
var re = /foo/; re[Symbol.match] = false; "/foo/".startsWith(re); // true "/baz/".endsWith(re); // false
仕様
| 仕様 | 状況 | コメント |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Symbol.match の定義 |
標準 | Initial definition. |
| ECMAScript 2017 Draft (ECMA-262) Symbol.match の定義 |
ドラフト |
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 未サポート | 40 (40) | 未サポート | 未サポート | 未サポート |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | 未サポート | 未サポート | 40.0 (40) | 未サポート | 未サポート | 未サポート |