【发布时间】:2014-10-10 03:14:51
【问题描述】:
我最近切换到 WebStorm,但在修改 javascript 原型时遇到了一个奇怪的问题。如果我定义以下内容:
something.really.neat = function(blah) {
this.dog = "cat"
}
something.really.neat.prototype.getCow = function(blah2) {
this.dog = "cow"
}
在原型函数中对 this.dog 的每次调用都会导致“未解析变量”错误。 WebStorm 应该能够轻松地跟踪从原型到主要功能的范围,但似乎无法做到。
这个函数的最终结果是一个角度工厂:
angular.factory('neat', function() {
return new something.really.neat();
});
【问题讨论】:
-
只有将构造函数放在
something.really.命名空间中才会发生这种情况吗?大写Neat是否有效?代码是否真的有效(并且只有“类型”推断是大喊警告)? -
它真的会警告“未解决的变量”吗?
.dog是一个属性,this是上下文而不是方法的范围。 -
它表示未解析的变量 dog,可能是因为 this 上下文没有属性 dog。也就是说,我设法找到了问题所在。
-
这应该有助于理解错误:Scope in JavaScript。迈克·韦斯特 (Mike West) 是一位好作家。
标签: javascript webstorm jetbrains-ide