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

如何找到在Javascript中定义对象成员的位置?,javascript,find,Javascript,Find,当然,大多数时候,我可以简单地搜索标识符并查看其所有实例。通常,搜索“=”或“:”会以最快的速度找到答案 但这种技术在以下情况下会失败: // untested javascript: function AddMemberToObject(object, value, memberName) { object[memberName] = value; } var myObj = {} // 3,000 references to myObj // ... somewhere els

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

但这种技术在以下情况下会失败:

// 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源代码中

在这种困难的情况下,有哪些技巧可以找到成员添加到对象中的位置?是否有一种在运行时执行此操作的方法(例如,使对象的所有添加触发一个事件,我们可以在调试器中侦听并中断该事件)?

Firefox具有非标准功能,它监视要为属性赋值的属性,并在发生此情况时运行函数