What does "return this" do within a javascript function?
i wonder, what does "return this" do within a javascript function, what's its purpose? supposing we have the following code:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
What does "return this" do inside of a function?
I know what code above does, and what is the use of "this" keyword. I just don't know what "return this" does inside of a function.
Solution 1:
It refers to the object instance on which the method is currently being called. It's used for chaining. For example, you could do something like this:
myObject.foo().bar();
Since foo
returns this
(a reference to myObject
), bar
will be called on the object too. This is the same thing as doing
myObject.foo();
myObject.bar();
But requires less typing.
Here is a more complete example:
function AnimalSounds() {}
AnimalSounds.prototype.cow = function() {
alert("moo");
return this;
}
AnimalSounds.prototype.pig = function() {
alert("oink");
return this;
}
AnimalSounds.prototype.dog = function() {
alert("woof");
return this;
}
var sounds = new AnimalSounds();
sounds.cow();
sounds.pig();
sounds.dog();
sounds.cow().pig().dog();
http://jsfiddle.net/jUfdr/
Solution 2:
It means the method will return the object it belongs to. This can be useful if you want to chain instructions like so:
MyObject.method1().method2().method3();
Real world example: jQuery
$(this).addClass('myClass').hide();