JavaScript intellisense в Visual Studio только частично работает
Я вижу странное поведение с JavaScript intellisense в Visual Studio 2013 Express для Web. Я следовал всем советам, которые мог найти в Google, и он почти идеально работает... но что-то, связанное с нахождением внутри или снаружи функции, похоже, влияет на это. Я очень плохо знаком с JavaScript, поэтому я мог что-то упустить, но для меня это не имеет никакого смысла:
Вне функции это, кажется, работает частично...(Я получаю один уровень intellisense)
(но не два)
Но внутри функции это работает отлично...(Я получаю все intellisense)
В отдельном файле я получаю аналогичную проблему, но ниже одного уровня функции...(ограничено здесь)
(но все здесь)
Любые советы будут высоко ценится!
1 ответ
Хорошо, я просмотрел код, вот что я думаю.
В Phaser.Game у вас есть этот код
/**
* @property {Phaser.GameObjectFactory} add - Reference to the Phaser.GameObjectFactory.
*/
this.add = null;
Поскольку изначально для него установлено значение null, я предполагаю, что Visual Studio не сможет определить, какой будет тип "add", поскольку он определяется только во время выполнения.
Если add(...) был определен как Phaser.Game.prototype.add = function() { ... } или даже внутри функции, использующей this.add = function() { ... } Я думаю, вы бы это увидели в intellisense (это обычно, как классы строятся в Javascript). Однако я заметил, что вы определяете это динамически позже в коде, подобном этому, с фабрики:
this.add = new Phaser.GameObjectFactory(this);
Visual Studio недостаточно умен, чтобы знать, что это определение add(...), которое следует использовать для intellisense.
Во втором примере игра передается в качестве аргумента, и Visual Studio недостаточно умна, чтобы понять, какой это будет тип. Поскольку Javascript имеет слабую типизацию, аргумент может быть Game, но также может быть целым, логическим или что-либо еще в этом отношении.