如果将函数名称作为字符串,如何调用函数? 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
};
答案 0 :(得分:1)
如果该功能在window
范围内,您可以使用此功能:
window[func](val);
答案 1 :(得分:0)
您可以使用 $(document).ready(function(){
$("button").click(function(){
$("div").scrollLeft(30);
});
});
来实现它,
apply() or call()
此行应添加
定义:
--->使用var test = func.apply(test,val);
或call()
,您可以设置apply()
的值,并调用this
作为现有对象的新方法。
function
与call()
之间的差异:
---> call()分别获取函数参数,apply()接受数组中的函数参数。
apply()
请运行以上代码段
答案 2 :(得分:0)
请确保您没有参数中的括号,请在浏览器控制台中尝试以下内容:
function addUser(id, callback) {
callback(id);
}
function callback(id) {
alert(id);
}
addUser(1, callback);
答案 3 :(得分:0)
GetActivityInfo
是其父函数的私有属性。它只能由closure访问。 property accessor无法访问它。它需要成为可访问对象的属性:
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
};
在上面的示例中,私有变量(初始化为匿名函数)已更改为私有函数,因此它可以是hoisted。