如何在Javascript中找到对象成员的定义?

时间:2011-04-25 19:33:05

标签: javascript find

当然,大多数时候,我只需搜索标识符并查看其所有实例。通常,搜索“=”或“:”会找到最快的答案。

但是这种技术失败的情况是这样的:

// untested javascript:
function AddMemberToObject(object, value, memberName) {
    object[memberName] = value;
}

var myObj = {}

// 3,000 references to myObj

// ... somewhere else
var mysteryString = thisMethodCallsAnotherMethodCallsAnotherMethodEtc();

AddMemberToObject(myObj, someFunction, mysteryString);

// 3,000 more references to myObj

假设我还没有发现上面的代码。如本例所示,一些使得很难找到定义成员的地方包括:

  • 要添加成员的对象 多次引用
  • 要添加的成员的名称是 指定远离的地方 成员被添加到对象中。更差 然而,它可能是动态生成的, 甚至是在服务器上生成的 在哪种情况下,成员名称不会 出现在js source中。

在这种困难的情况下,有哪些技术可以找到将成员添加到对象的位置?有没有办法在运行时执行此操作(例如,对对象进行所有添加会触发一个事件,我们可以在调试器中监听和中断事件)?

1 个答案:

答案 0 :(得分:2)

Firefox具有非标准function watch(),它监视要为其分配值的属性,并在发生这种情况时运行函数。