这可能是一个措辞不佳的问题,但考虑到这个片段:
var foo = { bar : 1 };
var bar = foo['bar'];
索引到foo时实际调用了哪些函数?同样,如果你有以下代码怎么办:
var foo = { bar : 1 };
for(var x in foo)
dosomething();
在for语句中实际上会调用foo上的哪些函数?假设我想改变给定对象的这两种场景的行为,我该怎么做?
更具体地说,我实际上在做的是将.net对象传递给MSHTML文档(上面的foo实际上是对象),该对象实现了IReflect并且在索引调用期间(如上面的场景1)调用到GetProperties和GetFields。我需要知道它正在寻找哪个属性,所以我可以实现它并让它调用我的对象。
答案 0 :(得分:1)
听起来好像你正在寻找像PHP一样的魔术吸气剂和定位器。 John Resig wrote an article关于此事。但它并不适用于所有平台。
答案 1 :(得分:0)
答案是第一部分是创建自己的PropertyInfo对象,这些对象以集合中项目的索引命名并返回它们。我仍然没有想出如何与for..in兼容。