oop - How does an object reference itself in Javascript? -


I was experimenting with a legacy in JavaScript, and wrote two functions:

  Object Prototype.inherits = function (obj) {this.prototype = new obj;} Object.prototype.pass = function (obj) {obj.prototype = new this;}  

This code works very well:

  Dog.inherits (animal);  

but the following fails:

  Animal.pass (dog);  

As I think, I do not work, because "this" is not a reference to the object instance? If this is the case, how can I refine the object from within me?

Thank you in advance!

OK, in fact these two are doing exactly the same:

 < Code> Dog.prototype = new animal;  

Under the methods this value will refer to base object , where reference was applied:

 < Code> dog inheritance (animal);   

This value dog will reference the constructor function, and obj will be the argument the animal function

When you call:

  Animal.pass (dog);   

This will reference the animal function, which in the end does the same thing, as inherits Method, but on the other side.

I recommend you to not expand the Object.prototype object, because it can give you a lot of problems, for example For those, both of those properties will be enumerated in any in the loop, for example:

 for  (var prop in {}) {// & Lt; - An empty object! Warning (support); // 'Inheritance' and 'Pass'}  

All objects are from Object.prototype , and it seems that you use these methods Only Function Objects, it will be safe to extend the Function.prototype object, or to implement the methods as tasks that carry two parameters.


Comments