この記事は編集レビューを必要としています。ぜひご協力ください。
よく知られた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) | 未サポート | 未サポート | 未サポート |