We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

よく知られた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.matchfalseに設定した場合、(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 Latest Draft (ECMA-262)
Symbol.match の定義
ドラフト  

ブラウザ実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 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) 未サポート 未サポート 未サポート

関連情報

ドキュメントのタグと貢献者

このページの貢献者: unarist, shide55
最終更新者: unarist,