sorry, i mentioned wrong, this is the correction as follows
Than i did Person.prototype.init.call(this, firstName, lastName, age) in my init() of Employee.prototype, On Nov 4, 12:15 pm, Rahul <[email protected]> wrote: > i did what u said, i swapped the calls, the call of init() went into > recursive mode, > > Than i did Person.prototype.init.call(this, firstName, lastName, age) > in my init() of Manager.prototype, > > it worked fine. > > But than one question, why i call init() of Person in the above way, > rather than straight call of function like this > > Person.prototype.init(firstName, lastName, age); > > this also worked fine an gave me the expected result. > > On Nov 3, 7:59 pm, Jake Verbaten <[email protected]> wrote: > > > > > > > > > Employee.prototype.init = > > function(firstName,lastName,age,employeeId){ > > alert("INIT-METHOD OF EMPLOYEE-PROTOTYPE "); > > if(arguments.length > 0){ > > this.init(firstName,lastName,age); > > this.empId = employeeId; > > } > > } > > > Employee.prototype = new Person(); > > > Here you are overwriting `Employee.prototype` after writing the init > > method. You will need to swap these two segments. > > > Even then it won't work as you expect because `this.init === > > Employee.prototype.init` and thus infinite recursion > > > You need a `Person.prototype.init.call(this, firstName, lastName, age)` > > > On Thu, Nov 3, 2011 at 2:49 PM, Rahul <[email protected]> wrote: > > > hi friends , > > > please follow the code below, > > > > function Person(firstName,lastName,age){ > > > alert(" Person constructor called "); > > > if(arguments.length > 0){ > > > this.init(firstName,lastName,age); > > > } > > > } > > > > Person.prototype.toString = function(){ > > > return "-> FIRST-NAME "+this.firstName+ > > > "\n LAST-NAME > > > "+this.lastName; > > > } > > > > Person.prototype.init = function(fName,lName,age){ > > > alert("INIT-METHOD OF PERSON-PROTOTYPE "); > > > this.firstName = fName; > > > this.lastName = lName; > > > this.age = age; > > > } > > > > function > > > Employee(firstName,lastName,age,employeeId){ > > > alert(" Employee constructor called "); > > > if(arguments.length > 0){ > > > this.init(firstName,lastName,age,employeeId); > > > } > > > } > > > > Employee.prototype.init = > > > function(firstName,lastName,age,employeeId){ > > > alert("INIT-METHOD OF EMPLOYEE-PROTOTYPE > > > "); > > > if(arguments.length > 0){ > > > this.init(firstName,lastName,age); > > > this.empId = employeeId; > > > } > > > } > > > > Employee.prototype = new Person(); > > > > Employee.prototype.toString = function(){ > > > return "<*> FIRST-NAME "+this.firstName+ > > > "\n LAST-NAME > > > "+this.lastName+ > > > "\n AGE "+this.age+ > > > "\n EMP-ID "+this.empId; > > > } > > > > Manager.prototype = new Employee(); > > > > function > > > Manager(firstName,lastName,age,id,deptName){ > > > alert(" Manager constructor called "); > > > > if(arguments.length > 0){ > > > > this.init(firstName,lastName,age,id); > > > this.deptName = deptName; > > > } > > > } > > > > Manager.prototype.toString = function(){ > > > return "(*) FIRST-NAME "+this.firstName+ > > > "\n(*) LAST-NAME > > > "+this.lastName+ > > > "\n(*) AGE "+this.age+ > > > "\n(*) EMP-ID "+this.empId > > > "\n(*) DAPARTMENT-NAME > > > "+this.deptName; > > > } > > > > function fn37(){ > > > var manager = new > > > Manager("Hemesh","Kataria", > > > 45,"INST3434","Instrumentation"); > > > alert(manager); > > > } > > > > fn37(); > > > > now what i am expecting is that my Manager should call internally > > > init() of Employee and than the init() method of Employee calls init() > > > method of Person, > > > > But whats happening is init() of Person is getting called, > > > > and the alert show the "id" property as "undefined", > > > > please tell me were i am going wrong > > > > -- > > > To view archived discussions from the original JSMentors Mailman list: > > > http://www.mail-archive.com/[email protected]/ > > > > To search via a non-Google archive, visit here: > > >http://www.mail-archive.com/[email protected]/ > > > > To unsubscribe from this group, send email to > > > [email protected] -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/[email protected]/ To search via a non-Google archive, visit here: http://www.mail-archive.com/[email protected]/ To unsubscribe from this group, send email to [email protected]
