2011-04-25 46 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(),它監視要分配一個值的屬性並在發生該情況時運行函數。

相關問題