function StringMatchJS(pattern) {
  CHECK_OBJECT_COERCIBLE(this, "String.prototype.match");

  if (!IS_NULL_OR_UNDEFINED(pattern)) {
    var matcher = pattern[matchSymbol];
    if (!IS_UNDEFINED(matcher)) {
      return %_Call(matcher, pattern, this);
    }
  }

  var subject = TO_STRING(this);

  // Equivalent to RegExpCreate (ES#sec-regexpcreate)
  var regexp = %_NewObject(GlobalRegExp, GlobalRegExp);
  RegExpInitialize(regexp, pattern);
  return regexp[matchSymbol](subject);
}
function StringMatchJS(pattern) {
  CHECK_OBJECT_COERCIBLE(this, "String.prototype.match");

  if (!IS_NULL_OR_UNDEFINED(pattern)) {
    var matcher = pattern[matchSymbol];
    if (!IS_UNDEFINED(matcher)) {
      return %_Call(matcher, pattern, this);
    }
  }

  var subject = TO_STRING(this);

  
  var regexp = %_NewObject(GlobalRegExp, GlobalRegExp);
  RegExpInitialize(regexp, pattern);
  return regexp[matchSymbol](subject);
}
function StringMatchJS ( pattern ) { CHECK_OBJECT_COERCIBLE ( this , "String.prototype.match" ) ; if ( ! IS_NULL_OR_UNDEFINED ( pattern ) ) { var matcher = pattern [ matchSymbol ] ; if ( ! IS_UNDEFINED ( matcher ) ) { return % _Call ( matcher , pattern , this ) ; } } var subject = TO_STRING ( this ) ; // Equivalent to RegExpCreate (ES#sec-regexpcreate) var regexp = % _NewObject ( GlobalRegExp , GlobalRegExp ) ; RegExpInitialize ( regexp , pattern ) ; return regexp [ matchSymbol ] ( subject ) ; }
ES6 21.1.3.11.
ES6 21 . 1 . 3 . 11 .