【发布时间】:2011-01-02 16:41:52
【问题描述】:
这可能是一个措辞不佳的问题,但考虑到这个 sn-p:
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。我需要知道它在寻找哪个属性,这样我才能实现它并让它调用我的对象。
【问题讨论】:
-
在对象的属性查找中没有调用 JavaScript 函数。您是在询问特定 JS 解释器的实现特定方法吗?
-
我希望你不要这么说。我可能会要求实现特定的方法,但我希望这些操作有相应的功能。那会很方便。然后我想我真正的问题是如何为 IReflect 对象建立索引...
-
原来你必须在 clr 对象上实际创建 'val' 属性!我期待对 InvokeMember 的调用会给我某种类型的索引器调用,但它实际上是将索引转换为对属性的调用......但仍在试图找出在 for 中的枚举。
-
呃,刚刚意识到一个数组具有名为 0、1、2... 的属性,它们不是 clr 对象的合法属性名称,所以这可能很棘手。
-
如果您需要更多这样的自定义内容,您最好实现自己的类(哈希或其他东西)并提供一些不错的方法(myHash.each)来迭代/等。跨度>
标签: javascript indexing for-loop mshtml