Javascript 当函数名为字符串时,如何调用函数并传递参数?
当函数名为字符串时,如何调用函数?e、 gJavascript 当函数名为字符串时,如何调用函数并传递参数?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,当函数名为字符串时,如何调用函数?e、 g $scope.ExecuteFunction = function (func,val) { // here func="GetActivityInfo" and val="ERF000000000A6543" // How to Invoke function named in variable func and pass val as parameter ? // GetActivityInfo(val) to be invoked.
$scope.ExecuteFunction = function (func,val) {
// here func="GetActivityInfo" and val="ERF000000000A6543"
// How to Invoke function named in variable func and pass val as parameter ?
// GetActivityInfo(val) to be invoked.
}
var GetActivityInfo = function (elementId) {
// some code
};
如果该功能在
窗口的范围内
,则可以使用:
window[func](val);
您可以使用
apply()或call()
来实现它
var测试=函数应用(测试,val)代码>
应添加此行
定义:
--->使用call()
或apply()
可以设置this
的值,并调用函数作为现有对象的新方法
调用()和应用()之间的区别:
--->call()分别接受函数参数,apply()接受数组中的函数参数
变量myObject,myArray;
函数myFunction(func,val){
var测试=功能应用(测试,val);
}
函数myFunction2(val){
警报(val)
}
myObject=myFunction(myFunction2,['myArray使用apply']调用);//将使用'apply'返回从内部调用的值`
document.getElementById(“demo”).innerHTML=myObject;
请确保参数中没有括号,请在浏览器控制台中尝试以下操作:
function addUser(id, callback) {
callback(id);
}
function callback(id) {
alert(id);
}
addUser(1, callback);
GetActivityInfo
是其父函数的私有属性。它只能由用户访问。用户无法访问它。它需要成为可访问对象的属性:
var accessibleObj = { GetActivityInfo: GetActivityInfo };
$scope.ExecuteFunction = function (func,val) {
// here func="GetActivityInfo" and val="ERF000000000A6543"
// How to Invoke function named in variable func and pass val as parameter ?
// GetActivityInfo(val) to be invoked.
accessibleObj[func](val);
}
//var GetActivityInfo = function (elementId) {
function GetActivityInfo (elementId) {
// some code
};
在上面的示例中,将私有变量(初始化为匿名函数)更改为私有函数,以便可以使用。全局函数是全局对象的属性(即浏览器中的窗口
)。因此,window[func](val)
应该做这项工作,确保func没有括号。GetActivityInfo
是其父函数的私有属性。它只能由用户访问。用户无法访问它。它需要成为可访问对象的属性。我收到此错误。窗口[func]不是函数在这种情况下,函数不在窗口范围内。不过,逻辑是有效的-您只需要使用正确的父级。将返回20
?我也不确定这是否回答了这个问题,OP表示函数将作为字符串存储在变量中。此处没有包含函数名的字符串。@Marccompt,谢谢,我很抱歉,注释来自原始文档,函数采用的形式,注释已更改,注释可能错误,但答案正确。:)func=“GetActivityInfo”和val=“ERF000000000A6543”。两者都是字符串值@Sravan我的问题是,我的函数名是从DB检索的字符串。我想在JS中调用这个函数。