1

前段時間我寫了一個Javascript繼承函數時,我注意到Visual Studio中一些非常奇怪的行爲,我不認爲在其他地方有過文檔記錄。我已經在VS2008和VS2010中觀察到了這一點,但它可能會早於我所知道的。任何人都可以解釋Visual Studio的Javascript intellisense的這種行爲嗎?

基本上,VS似乎正在執行一個函數,並在intellisense中提供結果。

例如:

function test(obj, member, value) { 
    obj[member] = value; 
    return obj; 
} 

function harness() { 
    var obj = {}; 
    test(obj, "firstname", "Jack"); 
    test(obj, "lastname", "Bauer"); 
    // If you now type in 'obj.' and wait for intellisense to pop-up you will notice that 'firstname' and 'lastname' will appear as members. 
} 

對於我的生活,我不能工作,如何這是可能的一個正常的語法檢查器 - VS不可能知道,「姓」或「姓」是一個沒有執行'test()'的對象成員,因爲它們不是成員,直到函數被調用。

任何人都可以提出解釋嗎?

回答

1

VS智能感知確實執行代碼(無論如何,僞執行)。

看一看這個:http://weblogs.asp.net/scottgu/archive/2010/04/08/javascript-intellisense-improvements-with-vs-2010.aspx

+0

乾杯,我錯過了那篇文章。僞執行運行得非常深,因爲我的繼承函數調用其他輔助函數來促進對象構造。一個驚人的功能,但它實現了! – Iian 2012-03-20 10:46:06

+0

是的,當我第一次讀這本書時,我印象深刻! – Carl 2012-03-20 11:07:46

相關問題