2

这可能是一个措辞不佳的问题,但考虑到这个片段:

var foo = { bar : 1 };
var bar = foo['bar'];

索引 foo 时实际调用了哪些函数?同样,如果您有以下代码怎么办:

var foo = { bar : 1 };
for(var x in foo)
   dosomething();

foo 上的哪些函数实际上会在 for 语句中被调用?假设我想为给定对象更改这两种场景的行为,我该怎么做?

更具体地说,我实际上正在做的是将 .net 对象传递给 MSHTML 文档(上面的 foo 将是现实中的对象),该对象实现 IReflect 并在索引调用期间(如上面的场景 1)调用 GetProperties 和生成了 GetFields。我需要知道它正在寻找哪个属性,以便我可以实现它并让它调用我的对象。

4

2 回答 2

1

听起来好像您正在寻找像 PHP 一样的魔法 getter 和 setter。John Resig 就此写了一篇文章。但它并不适用于所有平台。

于 2011-01-02T17:04:31.487 回答
0

第一部分的答案是创建您自己的 PropertyInfo 对象,这些对象以您的集合中项目的索引命名并返回它们。但是,我仍然没有弄清楚如何与 for..in 兼容。

于 2011-01-09T16:45:47.023 回答