1

我在 Visual Studio 2013 Express for Web 中看到 JavaScript 智能感知的一些奇怪行为。我遵循了所有我可以谷歌的建议,它几乎可以完美地工作..但是与函数内部或外部有关的事情似乎正在影响它。我对 JavaScript 很陌生,所以我可能会遗漏一些东西,但这对我来说没有任何意义:

在函数之外,它似乎部分工作...... 在此处输入图像描述 (我得到了一层智能感知)

在此处输入图像描述 (但不是两个)

但是在一个函数内部它工作得很好...... 在此处输入图像描述 (我得到了所有的智能)

在一个单独的文件中,我遇到了类似的问题,但在一个功能级别上...... 在此处输入图像描述 (仅限于此)

在此处输入图像描述 (但这里的一切)

任何建议将不胜感激!

4

1 回答 1

2

好的,我已经查看了代码,这就是我的想法。

在 Phaser.Game 你有这个代码

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

因为这最初设置为 null 我猜 Visual Studio 将无法推断“添加”将是什么类型,因为它仅在运行时确定。

如果 add(...) 被定义为 Phaser.Game.prototype.add = function() { ... } 或者甚至在使用 this.add = function() { ... } 的函数中,我想你会看到它在智能感知中(这通常是在 Javascript 中构建类的方式)。但是我注意到您稍后在工厂的代码中动态定义它:

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

Visual Studio 不够聪明,无法知道这是它应该用于智能感知的 add(...) 的定义。

在第二个示例中,游戏作为参数传递,Visual Studio 还不够聪明,无法确定这将是什么类型。因为 Javascript 是弱类型的,所以参数可以是游戏,但也可以是整数、布尔值或其他任何东西。

于 2015-04-27T16:07:21.500 回答