ProllyGeek
ProllyGeek

Reputation: 15836

Calling function inside object using bracket notation

If i have a function defined inside some object as in :

var myobject={
myfunction:function(){//mycode here}
}

usually you can access the function using:

myobject.myfunction()

but what if i want to use

myobject["myfunction"]

trying so , actually the function did not get called , how can i call the function using brackets notation ?

Upvotes: 4

Views: 4764

Answers (2)

Satpal
Satpal

Reputation: 133403

Use it like. You were very close

myobject["myfunction"]();

You can also do this

var myfuncname="myfunction";
myobject[myfuncname]();

Upvotes: 15

falstro
falstro

Reputation: 35657

The two forms

myobject.myfunction;

and

myobject["myfunction"];

are equivalent as long as you only use a fixed string to access the member (using a computed value is a different matter, then you must use the second form). Both lines result in the function-object-member myfunction which you can assign to a variable if you like, and calling that:

var myfunc = myobject.myfunction;
myfunc();

Note that assigning it to the variable breaks the this variable, so you might not want to do that if you're doing OOP.

And as you noted, calling a function means adding () with an argument list afterwards, it doesn't matter that the function is acquired through an expression, so either:

myobject.myfunction();

or

myobject["myfunction"]();

Upvotes: 2

Related Questions