KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I don't know how I've missed this for so long. I've been presuming private instance variables to work like this, but they don't. They're private (as in non-global), certainly, but the variables are shared across instances. This led to some very confusing bugs. I thought I was following the best practices implemented by some of the best libraries out there, but it seems I missed something. 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 I have looked at this post, but it doesn't describe a best practice for implementing private instance variables. (is this even the name of what I want?) Method and variable scoping of private and instance variables in JavaScript I also looked at this post, but the use of the 'this' keyword is what I used to do. Because it doesn't obfuscate I was trying to avoid it. Is this really the only way? Implementing instance methods/variables in prototypal inheritance
Tags (comma-separated)
Save Edits
Cancel