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.
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.
“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.
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.
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.
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/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With