0

Consider the following code snippet:

function C1() {
    // private variable in the constructor
    a = 1;
}

C1.prototype.f1 = function() {
console.log( "a=" +  a );
}

C1.prototype.f2 = function() {
    a = 2;
    process.nextTick( this.f1 );
}

o = new C1();
o.f1();
o.f2();

The output observed is:

a=1
a=2

I thought private variables aren't accessible outside of the Constructor function ?

Jonathan Lonowski
  • 121,453
  • 34
  • 200
  • 199
  • You have to [declare the variable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var) -- `var a = 1;`. Simply setting it can create a global. http://stackoverflow.com/q/1470488 – Jonathan Lonowski Aug 02 '13 at 07:06

1 Answers1

1

In JavaScript, a variable declared without the "var" keyword has global scope. In the browser this is achieved by attaching the variable to the window object (not sure how it works in Node). If you would like a private variable accessible to your object, try a closure around the object constructor and prototype declaration.

William Neely
  • 1,923
  • 1
  • 20
  • 23