Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Functions inside objects

I know the title is vague but I didn't know what to write.
In javascript, I know how to write functions that will be called like this :

argument1.function(argument2); 

Here is the fiddle demonstration : http://jsfiddle.net/rFXhf/
Now I wonder if I can do :

argument1.argument2.function(argument3);//And even more! 
like image 234
user1365010 Avatar asked Apr 30 '12 04:04

user1365010


1 Answers

Modern ES6 Approach

You no longer need to specify the function keyword when defining functions inside objects.

First option with named functions:

const myObj = {   myMethod(params) {     // ...do something here   },   myOtherMethod(params) {     // ...do something here   },   nestedObj: {     myNestedMethod(params) {       // ...do something here     }   } }; 

Second option with anonymous functions:

const myObj = {   myMethod: (params) => {     // ...do something here   },   myOtherMethod: (params) => {     // ...do something here   },   nestedObj: {     myNestedMethod: (params) => {       // ...do something here     }   } }; 

Pre ES6 style:

const myObj = {   myMethod: function myMethod(params) {     // ...do something here   },   myOtherMethod: function myOtherMethod(params) {     // ...do something here   },   nestedObj: {     myNestedMethod: function myNestedMethod(params) {       // ...do something here     }   } };  

Note: In the first example the functions are named and have their own this-context. In the second example, the this-context from outside of the functions is used. In the third example, the functions are not named, but have their own this-context.

So while all methods seem similar, they are a bit different.

like image 192
Govind Rai Avatar answered Sep 18 '22 09:09

Govind Rai