javascript - How to call a method in class from its replaced implementation? -


,

I'm trying to understand some concepts in JavaScript. Consider the following code:

  function person (name, age) {this.name = name || "no name"; This.age = age || "Age is not specified"; This.printStr = function () {console.log ("& lt;" + this.name + "," + this.age + "& gt;"); }; } P = new person ("Pranav", 26); P.printStr = function () {console.log ("This works .... even .... ...." + this.name); }; P.printStr ();  

I want to call the 'printStr' implementation in the person class from within the 'printStr' function implementation in 'P'.

It should do that the output is required:

   

Any thoughts? :)

The way your code is now set up, you can not do this. When you call person as a constructor, the object that is going to be p is set to this . So when you define printStr in the constructor, then p gets a property named printStr . When you assign another function, you write it over over.

Two options: There is no answer which is pblochane - the internal code is called oldPrintStr . Another option is to use prototype legacy:

  function person (name, age) {this.name = name || "no name"; This.age = age || "Age is not specified"; } Person.prototype.printStr = function () {console.log ("& lt;" + this.name + "," + this.age + "& gt;"); };  

Then you can do this:

  p = new person ("Pranav", 26); P.printStr = function () {person.prototype.printStr.apply (this); Console.log ("It works .... even ...." + this.name); }; P.printStr ();  

Comments

Popular posts from this blog

c# - How to capture HTTP packet with SharpPcap -

jquery - SimpleModal Confirm fails to submit form -

php - Multiple Select with Explode: only returns the word "Array" -