Calling function inside object using bracket notat

2019-02-19 07:45发布

问题:

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 ?

回答1:

Use it like. You were very close

myobject["myfunction"]();

You can also do this

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


回答2:

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"]();