SomeClass = function(id) { this._id = id; } (function() { function intFun() { return this._id; } SomeClass.prototype.extFun = function() { return incFun(); } })(); SomeClass = function (id) { var THIS = this; // unambiguous reference THIS._id = id; var intFun = function () { // private return THIS._id; } this.extFun = function () { // public return intFun(); } } MyClass = function(x, y, z) { // This is the constructor. When you use it with "new MyClass()," // then "this" refers to the new object being constructed. So you can // assign member variables to it. this.x = x; ... }; MyClass.prototype = { doSomething: function() { // Here we can use the member variable that // we created in the constructor. return this.x; }, somethingElse: function(a) { } }; var myObj = new MyClass(1,2,3); alert(myObj.doSomething()); // this will return the object's "x" member alert(myObj.x); // this will do the same, by accessing the member directly myDiv.onclick = myObj.doSomething; myDiv.onclick = function() { myObj.doSomething.call(myObj); } var MyClass = function() {}; MyClass.prototype = { _someVar : null, _otherVar : null, initialize: function( optionHash ) { _someVar = optionsHash["varValue"]; _otherVar = optionsHash["otherValue"]; }, method: function( arg ) { return _someVar + arg; }, }; var myClass = new MyClass( { varValue: -1, otherValue: 10 } ); var foo = myClass.method(6);