在Firefox中实现以函数形式访问Array中元素

有些IE支持的东西,你在msdn里也找不到.
IE支持javascript以函数的形式访问数组中的元素,比如a是一个数组,通常访问其中元素的方法是a[n],在IE里,你也可以用a(n).msdn中javascript/jscript的章节没说你可以这么用,实际上这是一个vbscript的功能.不知道这是因为脚本引擎共享代码造成的bug,还是专门为了讨好VBer.
以前以为要在Gecko中实现这个功能会比较难,前两天研究了一下 Gecko 的 javasript 引擎spidermonkey 以及 javascript object 和 C++ Object 的关系, 发现实际上每个 javascript object 都有一个可选的 Call 接口,这也不奇怪,每个 function 在 javascript 里都是一个 object .所以剩下的事情就是为 nsDOMClassInfo 里的 nsArraySH 和 nsNamedArray 都实现这个接口就可以了.整个补丁只增加了一百来行就搞定了.

Technorati Tags: ,