问题
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"]();
来源:https://stackoverflow.com/questions/21181926/calling-function-inside-object-using-bracket-notation