Во время написания функции наследования Javascript некоторое время назад я заметил очень странное поведение с intellisense в Visual Studio, которое, я не думаю, было задокументировано в другом месте. Я наблюдал это до сих пор в 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 ()» как они не являются членами, пока не будет вызвана функция.
Может кто-нибудь предложить объяснение?