Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "return this" do within a javascript function?

Tags:

javascript

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.

like image 283
user722756 Avatar asked Nov 28 '11 18:11

user722756


People also ask

What does this => mean in JavaScript?

It's a new feature that introduced in ES6 and is called arrow function. The left part denotes the input of a function and the right part the output of that function.

Why do we use this in JavaScript?

“This” keyword refers to an object that is executing the current piece of code. It references the object that is executing the current function. If the function being referenced is a regular function, “this” references the global object.

What is the use of a return statement in a function?

A return statement ends the execution of a function, and returns control to the calling function. Execution resumes in the calling function at the point immediately following the call. A return statement can return a value to the calling function.

How does this work in JavaScript?

In JavaScript, the this keyword allows us to: Reuse functions in different execution contexts. It means, a function once defined can be invoked for different objects using the this keyword. Identifying the object in the current execution context when we invoke a method.


1 Answers

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/

like image 197
Alex Turpin Avatar answered Oct 02 '22 15:10

Alex Turpin