所以每个人都知道"隐式方法"的意思吗?它们就像昔日Windows COM时代的那些默认属性,你可以输入类似的东西
val = obj(arguments)
Run Code Online (Sandbox Code Playgroud)
它将被解释为
val = obj.defaultMethod(arguments)
Run Code Online (Sandbox Code Playgroud)
我刚刚发现JavaScript有同样的事情:RegExp对象的默认方法似乎是'exec',如
/(\w{4})/('yip jump man')[1]
==> jump
Run Code Online (Sandbox Code Playgroud)
这甚至可以在将RegExp对象分配给变量时使用,甚至在使用RegExp构造函数创建它时,而不是/.../,这对我们的粉丝来说是参考透明度的好消息.
这在哪里记录,和/或是否已被弃用?
这个功能是非标准的,一些实现,如Mozilla(Spidermonkey和Rhino)和谷歌Chrome(V8)包含它,但我会高度反对它的使用,因为它不是规范的一部分.
这些实现使RegExp对象可调用,并且调用这些对象等同于调用该.exec方法.
在Chrome(和Firefox 2.x)中,即使您将typeof操作符与RegExp对象一起使用,也会得到"function"(因为它们实现了[[Call]]内部方法).
typeof /foo/ == "function"; // true
Run Code Online (Sandbox Code Playgroud)
IMO我也没有看到使用的好处:
regexp(str);
Run Code Online (Sandbox Code Playgroud)
与:
regexp.exec(str);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |