After reading a bit on Javascript's prototypical inheritance model, I change my style of constructing a class from
var Some_Class = function() { this.public_method = function() { }; (function() { // constructor }).call(this) } to
var Some_Class = function() { (function() { // constructor }).call(this) } Some_Class.prototype.public_method = function() { }; Although I understand that this is a good practice, but I am not allowed to access private methods from the public method anymore
var Some_Class = function() { var private_member = 'whatever'; (function() { // constructor }).call(this) } Some_Class.prototype.public_method = function() { return private_member; // not possible }; After reading through an article here (Closure-created constructor), then I came out with this
var Some_Class = function() { var private_member = 'whatever', private_method = function(_some_value) { // private method implementation }; if(!arguments.callee.prototype.public_method) { arguments.callee.prototype.public_method = function() { private_method.call(this, private_method); }; } (function() { // constructor }).call(this) } However, what are the drawbacks of doing this?! or is there a better way of doing this if I want to access private member in the public method?