1

Я вижу странное поведение с JavaScript intellisense в Visual Studio 2013 Express для Интернета. Я следил за всеми советами, которые я мог сделать в Google, и это почти отлично работает. Но что-то связанное с тем, что внутри или вне функции, похоже, влияет на нее. Я новичок в JavaScript, так что я мог бы быть что-то не хватает, но это не имеет никакого смысла для меня:JavaScript intellisense в Visual Studio работает только частично

Вне функции, которую он, кажется, работает частично ... enter image description here (я получаю один уровень IntelliSense)

enter image description here (но не два)

но внутри функции он прекрасно работает ... enter image description here (я все IntelliSense)

В отдельном файле, я получаю подобную проблему, но на одном уровне функции ... enter image description here (ограниченное здесь)

enter image description here (но здесь все)

Любые советы будут оценены!

+0

Аргумент, переданный в Платфоме, может быть любым, потому что Javascript слабо типизирован, поэтому intellisense не может сделать вывод, что это такое. Не могли бы вы показать код для Phaser.Game? – garryp

+0

Но intellisense может сделать вывод о том, что платформа находится в 2 примерах, которые я показал, не так ли? Поэтому я просто подумал, почему он не работает в других. Phaser.Game можно найти здесь: https://raw.githubusercontent.com/photonstorm/phaser/master/build/phaser.js. Просто найдите «@class Phaser.Game». – JD41

ответ

2

OK Я просмотрел код, вот что я думаю.

В Phaser.Game у вас есть этот код

/** 
* @property {Phaser.GameObjectFactory} add - Reference to the Phaser.GameObjectFactory. 
*/ 
this.add = null; 

Поскольку это изначально установлено нулевое значение Я предполагаю, что Visual Studio не сможет сделать вывод, что тип «добавить» будет, так как она определяется только во время выполнения.

Если add (...) был определен как Phaser.Game.prototype.add = function() {...} или даже внутри функции, используя this.add = function() {...} Я думаю вы увидите его в intellisense (обычно это как классы создаются в Javascript). Однако я заметил, что вы определяете его динамически позже в коде, как это с завода:

this.add = new Phaser.GameObjectFactory(this); 

Visual Studio не достаточно умен, чтобы знать это определение дополнения (...) он должен использовать для IntelliSense ,

Во втором примере игра передается как аргумент, а визуальная студия недостаточно умна, чтобы определить, какой тип будет. Поскольку Javascript слабо типизирован, аргумент может быть игрой, но также может быть целым, логическим или что-либо еще в этом отношении.

Смежные вопросы