Javascript 如何将一个方法传递给另一个方法而不调用它,并将一个变量对象传递给它?
对不起,我的最后一个问题。这是一个格式更好的问题 我有一个正在传递方法的方法:Javascript 如何将一个方法传递给另一个方法而不调用它,并将一个变量对象传递给它?,javascript,jquery,Javascript,Jquery,对不起,我的最后一个问题。这是一个格式更好的问题 我有一个正在传递方法的方法: method("my_passed_method()") function method(passed_method){ eval(passed_method.replace('()', + '(' + obj + ')' ); } 但这也带来了: 元素列表后的SyntaxError:missing] 我假设这只是一些简单的JSON语法错误。方法的名称,同时是您对该方法对象的引用。括号(可选地在括号之间
method("my_passed_method()")
function method(passed_method){
eval(passed_method.replace('()', + '(' + obj + ')' );
}
但这也带来了:
元素列表后的SyntaxError:missing]
我假设这只是一些简单的JSON语法错误。方法的名称,同时是您对该方法对象的引用。括号(可选地在括号之间包含参数)使javascript调用该方法。这意味着您的代码可以重写为:
method(my_passed_method)
function method(passed_method){
passed_method();
}
那么,这是怎么回事?
当您传入名称my_passed_方法
时,javascript引擎将查看该名称映射到什么,并发现它映射到Functiono对象。
然后,在方法的函数调用中,该对象被分配给参数名“passed\u method”。然后,在这个名称后面加上括号将使javascript尝试执行这个对象,这确实是可能的,因为这个对象是一个函数,就像任何其他类型一样,函数就是我们所称的第一类citezens。您可以像对待任何其他值一样,通过将它们分配给变量并传递它们。方法的名称同时是您对该方法对象的引用。括号(可选地在括号之间包含参数)使javascript调用该方法。这意味着您的代码可以重写为:
method(my_passed_method)
function method(passed_method){
passed_method();
}
那么,这是怎么回事?
当您传入名称my_passed_方法
时,javascript引擎将查看该名称映射到什么,并发现它映射到Functiono对象。
然后,在方法的函数调用中,该对象被分配给参数名“passed\u method”。然后,在这个名称后面加上括号将使javascript尝试执行这个对象,这确实是可能的,因为这个对象是一个函数,就像任何其他类型一样,函数就是我们所称的第一类citezens。您可以像对待任何其他值一样,将它们分配给变量并传递它们。我想您可能希望这样:
method(my_passed_method)
function method(passed_method){
passed_method(obj);
}
请注意,当您调用方法时,您传递的是函数引用,而不是字符串,并且您没有调用我的传递的方法(后面没有()
),您只是引用它
在method
中,您可以通过变量passed\u method
调用函数,因为该变量包含函数引用
在JavaScript中,函数是第一类对象。变量可以引用它们,也可以传递它们,等等
下面是一个完整的、自包含的示例:
// The function we'll pass in
function functionToPass(arg) {
display("functionToPass's arg is: " + arg);
}
// The function we pass it into
function functionReceivingIt(func) {
func("foo");
}
// Do it
functionReceivingIt(functionToPass);
|我想你可能想要这个:
method(my_passed_method)
function method(passed_method){
passed_method(obj);
}
请注意,当您调用方法时,您传递的是函数引用,而不是字符串,并且您没有调用我的传递的方法(后面没有()
),您只是引用它
在method
中,您可以通过变量passed\u method
调用函数,因为该变量包含函数引用
在JavaScript中,函数是第一类对象。变量可以引用它们,也可以传递它们,等等
下面是一个完整的、自包含的示例:
// The function we'll pass in
function functionToPass(arg) {
display("functionToPass's arg is: " + arg);
}
// The function we pass it into
function functionReceivingIt(func) {
func("foo");
}
// Do it
functionReceivingIt(functionToPass);
|在Javascript中,函数被视为对象。您可以将它们作为参数传递给其他函数,如下所示
function something(x){
alert(x);
}
function pass(func){
pass2(func);
}
function pass2(func){
func("hello");
}
pass(something); //alerts hello
演示:
在Javascript中,函数被视为对象。您可以将它们作为参数传递给其他函数,如下所示
function something(x){
alert(x);
}
function pass(func){
pass2(func);
}
function pass2(func){
func("hello");
}
pass(something); //alerts hello
演示:
eval
是邪恶的;或者他们这么说。您不需要以字符串形式传递函数,只需传递函数本身,然后使用或传递参数(或直接调用):
需要eval
的情况非常罕见
请注意,您的代码将obj评估为javascript,因此输出可能不同。eval
是邪恶的;或者他们这么说。您不需要以字符串形式传递函数,只需传递函数本身,然后使用或传递参数(或直接调用):
需要eval
的情况非常罕见
请注意,您的代码将obj评估为javascript,因此输出可能会有所不同。代码中有一个错误+…这里有几个好答案。在javascript中,方法/函数是可以像任何其他对象一样传递给其他函数的对象。此外,eval是邪恶的。在你的代码中有一个错误+…这里有几个好的答案。在javascript中,方法/函数是可以像任何其他对象一样传递给其他函数的对象。同样,eval是邪恶的。