title: Proper way to call superclass functions from subclass
body: <p>I have a "SuperClass" with "info" as an instance variable. "SuperClass" has function "printInfo()". "printInfo()" needs to access instance variable "info". 
  I want to create a "SubClass" which also has method "printInfo()". I want to call printInfo() of "SuperClass" from "printInfo()" of "SubClass". </p>
  
  <pre><code>SuperClass = function()
  {
      this.info = "I am superclass";
      console.log("SuperClass:");
  };
  
  SuperClass.prototype.printInfo = function(that)
  {
      console.log("printing from superclass printInfo");
      console.log(that.info);
  };
  
  SubClass = function(){};
  
  SubClass.prototype = new SuperClass();
  
  SubClass.prototype.printInfo = function()
  {
      console.log("calling superclass");
      this.constructor.prototype.printInfo(this);
      console.log("called superclass");
  };
  
  var sc = new SubClass();
  sc.printInfo();
  </code></pre>
  
  <p>You can see that I am passing "that" as a parameter to printInfo. Without "that" parameter, "info" is printed as "undefined". Like in the following case, "this.info" is undefined when this function is called from object of "SubClass".</p>
  
  <pre><code>SuperClass.prototype.printInfo = function()
      {
          console.log("printing from superclass printInfo");
          console.log(this.info);
      };
  </code></pre>
  
  <p>What is the proper way to override and invoke methods of superclass in javascript, enabling functions to access instance variables of the class?</p>