任何人都可以解释Visual Studio Javascript intellisense的这种行为吗?

时间:2012-03-20 10:22:36

标签: javascript visual-studio intellisense abstract-syntax-tree

在前一段时间写一个Javascript继承函数时,我注意到Visual Studio中有一些非常奇怪的intellisense行为,我认为其他地方没有记录。到目前为止,我已经在VS2008和VS2010中观察到了这一点,但它可以追溯到我所知道的所有时间。

基本上,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不可能知道'firstname'或'lastname'是一个对象成员而不执行'test()'在调用函数之前,它们不是成员。

有人可以提出解释吗?

1 个答案:

答案 0 :(得分:1)

VS intellisense确实执行了代码(无论如何都是伪执行)。

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