25 lines
821 B
JavaScript
25 lines
821 B
JavaScript
'use strict';
|
|
require('./es6.regexp.flags');
|
|
var anObject = require('./_an-object')
|
|
, $flags = require('./_flags')
|
|
, DESCRIPTORS = require('./_descriptors')
|
|
, TO_STRING = 'toString'
|
|
, $toString = /./[TO_STRING];
|
|
|
|
var define = function(fn){
|
|
require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);
|
|
};
|
|
|
|
// 21.2.5.14 RegExp.prototype.toString()
|
|
if(require('./_fails')(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){
|
|
define(function toString(){
|
|
var R = anObject(this);
|
|
return '/'.concat(R.source, '/',
|
|
'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
|
|
});
|
|
// FF44- RegExp#toString has a wrong name
|
|
} else if($toString.name != TO_STRING){
|
|
define(function toString(){
|
|
return $toString.call(this);
|
|
});
|
|
} |