So everyone knows what I mean by “implicit methods”? They’re like those default properties
from the Windows COM days of yore, where you could type something like
val = obj(arguments)
and it would be interpreted as
val = obj.defaultMethod(arguments)
I just found out JavaScript has the same thing: the default method of a RegExp object
appears to be ‘exec’, as in
/(\w{4})/('yip jump man')[1]
==> jump
This even works when the RegExp object is assigned to a variable, and even when
it’s created with the RegExp constructor, instead of /.../, which is good news
to us fans of referential transparency.
Where is this documented, and/or is it deprecated?
This feature is non-standard, some implementations like the Mozilla (Spidermonkey and Rhino) and the Google Chrome (V8) include it, but I would highly discourage its usage, because it isn’t part of the specification.
Those implementations make
RegExpobjects callable, and invoking those objects is equivalent to call the.execmethod.In Chrome (and Firefox 2.x) even when you use the
typeofoperator with aRegExpobject, you get"function"(because they implement the[[Call]]internal method).Also IMO I don’t see the benefit of using:
Versus:
This is slightly documented here by Mozilla.