Я не знаю, как я пропустил это так долго. Я предполагал, что частные переменные экземпляра работают так, но они этого не делают. Они частные (как в неглобальных), конечно, но переменные разделяются между экземплярами. Это привело к некоторым очень запутывающим ошибкам.
Я думал, что я слежу за лучшими практиками, реализованными некоторыми из лучших библиотек, но, похоже, я что-то пропустил.
var Printer = (function(){
var _word;
Printer = function(word){
_word = word;
}
_print = function(){
console.log(_word);
}
Printer.prototype = {
print: _print
}
return Printer;
})();
var a = new Printer("Alex");
var b = new Printer("Bob");
a.print(); //Prints Bob (!)
b.print(); //Prints Bob
Я просмотрел этот пост, но он не описывает наилучшую практику для реализации частных переменных экземпляра. (это даже название того, что я хочу?) Метод и изменение переменных частных переменных и экземпляров в JavaScript
Я также просмотрел этот пост, но использование ключевого слова 'this' - это то, что я делал. Потому что это не запутывает, я пытался избежать этого. Это действительно единственный способ? Внедрение методов/переменных экземпляра в прототипальном наследовании