При экспериментировании с методом создания частных статических методов я натолкнулся на это очень странное поведение. В следующем коде публичный метод getData перезаписывается собственными данными возврата, хотя он никогда не называется явным образом! Это очень странно для меня и задумался над тем, что здесь происходит. Полагаю, это служит мне для того, чтобы не просто охватить всю страницу в анонимной функции в соответствии с шаблоном модуля, но я все равно хотел бы понять эту ошибку.Расширение прототипа в анонимной функции - странные эффекты
function MyClass() {
this._prop = true;
}
MyClass.prototype.getData = function() {
this._prop = false;
return { a: 2344, b: 765, c: 234 };
}
(function() {
var privateStatic = 0;
MyClass.prototype.getCount = function() {
return privateStatic++;
}
}());
var m = new MyClass();
console.log(m.getData()); //Error (object is not a function)
console.log(m.getData); //prints {a:2344,b:765,c:234}
вам нужно полу (;) после назначения метода getData; это выражение. в противном случае функция передается результат вашего анона, и результат этого присваивается экземпляру.getData – dandavis