Possible Duplicate:
Why are my JS object properties being overwritten by other instances
Why isn't the attribute "t" changed after setT was called? I would expect "4" as output, but it prints "default".
function Car(i) {
  var id = i;
  var t = "default";
  this.getT = function() { return t; }
  this.setT = function(p) {
    t = p;  // attribute t isn't changed ..
  }
}
function ECar(id) {  
  Car.call(this, id);  // super constructor call
  this.setT = function(p) {  // override
    ECar.prototype.setT.call(this, p); // super call
  }
}
ECar.prototype = new Car();
ecar = new ECar(3);
ecar.setT(4);
alert(ecar.getT()); // prints default, not 4