Javascript 根据传递的参数调用js函数
我试图在另一个函数中调用js函数,但使用参数指定该函数。根据传递的参数,它将调用不同的函数Javascript 根据传递的参数调用js函数,javascript,arguments,Javascript,Arguments,我试图在另一个函数中调用js函数,但使用参数指定该函数。根据传递的参数,它将调用不同的函数 function toggle(n){ if (sessionStorage['toggle'+n]== 0){ check+n(); } else } 因此,例如,如果参数'ballos'作为n传递,那么它将调用函数checkballos()“check+n();”当前不在此处工作。对不起,我没有简单
function toggle(n){
if (sessionStorage['toggle'+n]== 0){
check+n();
}
else
}
因此,例如,如果参数'ballos'作为n传递,那么它将调用函数checkballos()<代码>“check+n();”当前不在此处工作。对不起,我没有简单的js语法 如果您这样做:
if (sessionStorage['toggle'+n]== 0){
window["check" + n]();
}
如果您这样做,将起作用:
if (sessionStorage['toggle'+n]== 0){
window["check" + n]();
}
将起作用如果在全局范围(浏览器)中定义了该功能,则可以执行以下操作:
window["check"+n]();
或者一些租户,比如Node.js,您可以从全局对象访问它
global["check"+n]();
如果它是其他对象的一部分,那么您也会这样做
obj["check"+n]();
也可以使用
[]
约定访问对象上定义的函数和属性。i、 eobj[“propFuncName”]
将为您提供对它的引用,因此在使用方法时,您可以添加()
来调用它。如果函数是在全局范围(浏览器)中定义的,您可以执行以下操作:
window["check"+n]();
或者一些租户,比如Node.js,您可以从全局对象访问它
global["check"+n]();
如果它是其他对象的一部分,那么您也会这样做
obj["check"+n]();
也可以使用
[]
约定访问对象上定义的函数和属性。i、 eobj[“propFuncName”]
将为您提供对它的引用,因此在使用方法时,您可以添加()
来调用它。如果函数是全局函数,您可以执行以下操作:
window["check" + n]();
或者,您可以将函数放在如下对象中:
myNamespace = {};
myNamespace.checkSomething = function(){ /* ... */ }
// call it like this:
myNamespace["check" + n]();
如果函数是全局函数,则可以执行以下操作:
window["check" + n]();
或者,您可以将函数放在如下对象中:
myNamespace = {};
myNamespace.checkSomething = function(){ /* ... */ }
// call it like this:
myNamespace["check" + n]();
到目前为止,答案是正确的,但缺乏解释 在JavaScript中,当函数名为字符串时,不能按名称调用该函数。您可以做的是按名称从对象中检索一个值,如果该值恰好是一个函数,则可以调用它。例如:
var myObject={};
myObject.myFunction=function(){alert('test!');};
//获取名为“myFunction”的“myObject”的属性`
var theFunctionLookup=myObject['myFunction'];
//因为该属性是一个函数,所以可以调用它!
函数lookup();
在浏览器中,全局范围中定义的函数将附加到窗口
对象。例如,这项工作:
function myFunction(){alert('test');}
var theFunctionLookup=window['myFunction'];
函数lookup();
您可以将最后两行缩短为一行:
function myFunction(){alert('test');}
//查找并在一行中调用该函数。
窗口['myFunction']();
出于同样的原因,您可以使用动态计算的字符串来查找函数
函数checkBalloon(){
警报(“检查气球”);
}
功能切换(n){
if(会话存储['toggle'+n]==0){
窗口[‘检查’+n]();
检查+n();
}
}
切换(“气球”);
到目前为止,答案是正确的,但缺乏解释
在JavaScript中,当函数名为字符串时,不能按名称调用该函数。您可以做的是按名称从对象中检索一个值,如果该值恰好是一个函数,则可以调用它。例如:
var myObject={};
myObject.myFunction=function(){alert('test!');};
//获取名为“myFunction”的“myObject”的属性`
var theFunctionLookup=myObject['myFunction'];
//因为该属性是一个函数,所以可以调用它!
函数lookup();
在浏览器中,全局范围中定义的函数将附加到窗口
对象。例如,这项工作:
function myFunction(){alert('test');}
var theFunctionLookup=window['myFunction'];
函数lookup();
您可以将最后两行缩短为一行:
function myFunction(){alert('test');}
//查找并在一行中调用该函数。
窗口['myFunction']();
出于同样的原因,您可以使用动态计算的字符串来查找函数
函数checkBalloon(){
警报(“检查气球”);
}
功能切换(n){
if(会话存储['toggle'+n]==0){
窗口[‘检查’+n]();
检查+n();
}
}
切换(“气球”);
好的。。。。出于兴趣,窗户部分是什么?我以为我只是没有正确地编写语法?您正在将方法作为对象属性访问。代码中设置的每个全局变量或函数(未设置为另一个函数)都将在窗口对象中设置。仅键入“check()”调用函数,与调用“window.check()”或“window[“check”]()”相同。确定。。。。出于兴趣,窗户部分是什么?我以为我只是没有正确地编写语法?您正在将方法作为对象属性访问。代码中设置的每个全局变量或函数(未设置为另一个函数)都将在窗口对象中设置。仅键入“check()”调用函数,与调用“window.check()”或“window[“check”]()”相同。谢谢,这是有效的。但是,我必须仔细阅读函数的范围,因为我不确定使用哪个函数。不过,谢谢你的帮助。谢谢,这很有效。但是,我必须仔细阅读函数的范围,因为我不确定使用哪个函数。不过,谢谢您的帮助。请考虑是否可以做一个通用的<代码>检查< /代码>,使用参数<代码> n>代码>。考虑是否可以做一个通用的<代码>检查< /代码>,它采用参数<代码> n< /代码>。