RegExps that don't modify global state?

Claude Pache claude.pache at gmail.com
Tue Sep 23 07:59:01 PDT 2014


Le 23 sept. 2014 à 16:35, C. Scott Ananian <ecmascript at cscott.net> a écrit :

> On Tue, Sep 23, 2014 at 10:04 AM, Claude Pache <claude.pache at gmail.com> wrote:
>> Another idea is to  to define a variant of the `RegExp.prototype.exec()` method, that does the Right Thing (doesn't read/write stuff on the RegExp instance, nor on the RegExp global, nor I don't know where):
>> 
>>    RegExp.prototype.run (str, params):
>> 
>>        Do what is currently specified for `RegExp.prototype.exec`, except that:
>> 
>>            * global, sticky and lastIndex properties are read and written on `params` instead of `this`
>>            * implementations are not allowed to extend that method in order to mess with `RegExp`, etc.
>> 
>> All other (legacy) methods are rewritten in terms of `RE.p.run` (in the current ES6 draft, they are mostly written in terms of `RE.p.exec`).
> 
> +1.  Deprecating the side-effects of the legacy methods might be tricky though.
>  --scott

I think that "deprecating" is a word that the web hardly understand. For instance, in the spec, `String.prototype.blink` (yuck!) isn't marked as "deprecated", but as "mandatory for web browsers". In our case, `.exec()`, `.match()`, etc. will still need to support some legacy stuff. Brand new methods will not.

—Claude



More information about the es-discuss mailing list