Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当函数名为字符串时,如何调用函数并传递参数?_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 当函数名为字符串时,如何调用函数并传递参数?

Javascript 当函数名为字符串时,如何调用函数并传递参数?,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.

当函数名为字符串时,如何调用函数?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.
}

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中调用这个函数。