7

Consider following code:

mynamespace.myclass = function() { this.myfunction = function() { alert("Original"); } } 

What I'm trying to do is to overwrite myfunction from outside of mynamespace.myclass declaration.

While adding new functions through prototype seems to work ok, if I define a function with the same name the original function doesn't get overwritten:

mynamespace.myclass.prototype.myfunction = function() { alert("Overwritten"); } 

Any ideas?

1 Answer 1

15

That's because myfunction is being added in the constructor, which happens after the prototype properties are added (so that the "Original" is in fact overwriting the "Overwritten").

You'll have to mimic this behaviour, by overwriting mynamespace.myclass itself:

var oldClass = mynamespace.myclass; // Copy original before overwriting mynamespace.myclass = function () { // Apply the original constructor on this object oldClass.apply(this, arguments); // Now overwrite the target function after construction this.myfunction = function () { alert("Overwritten"); }; }; mynamespace.prototype = oldClass.prototype; // Same prototype 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.