2011-04-25 40 views
5

当然,大多数情况下,我可以简单地搜索标识符并查看其所有实例。通常,搜索“=”或“:”会以最快的速度找到答案。如何找到在Javascript中定义对象成员的位置?

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

// 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源中的 。

什么是一些技术来找到成员被添加到对象在这样的困难情况下的对象?有没有办法在运行时执行此操作(例如,使对象的所有添加都触发一个事件,我们可以在调试器中侦听并打断它)?

回答

2

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

相关问题