提问人:Aaron 提问时间:5/9/2011 更新时间:5/9/2011 访问量:964
如何在第一个函数参数中将一个函数传递给另一个函数?
How would I pass one function to another function in the first functions parameters?
问:
如何将 testx 函数作为参数传递给 change_text 函数?
function change_text(to, id, func) {
this.to = to;
this.id = id;
this.doit = function() {
this.target = document.getElementById(this.id);
this.target.innerHTML = this.to;
}
func;
}
function testx() {
alert("TESTING");
}
var box = new change_text("HELLO, WORLD", 'theboxtochange', 'testx()');
答:
5赞
T.J. Crowder
5/9/2011
#1
只需给出其名称(不带引号或引号):
var box = new change_text("HELLO, WORLD", 'theboxtochange', testx);
函数是第一类对象,因此它们的名称是对它们的引用。
在 中,你可以使用你对它的引用来调用它 (),就像指向函数的任何其他符号一样,所以:change_text
func
func();
0赞
Aaron
5/9/2011
#2
我已经改进了代码,现在我明白函数是第一类对象,因此任何对象名称也是对它的引用。并且该名称可以通过省略名称周围的括号传递给参数中的其他函数。
function change_text(to, id, func) {
this.to = to;
this.id = id;
this.doit = function() {
this.target = document.getElementById(this.id);
this.target.innerHTML = this.to;
}
this.func = func;
}
function testx() {
alert("TESTING");
}
var box = new change_text("HELLO, WORLD", 'theboxtochange', testx());
box.func()
最后一行代码调用传递给第一个函数的函数。
评论
1赞
T.J. Crowder
5/9/2011
(FWIW,对您自己的问题的更新/评论通常应该是对问题的编辑,而不是答案。
0赞
Aaron
5/9/2011
@T.J. Crowder:我会记住这一点,并将在未来通过任何改进来更新这个问题。感谢您的链接,我将通读它并尝试理解其背后的高级概念。
0赞
nnnnnn
5/9/2011
在更新后的代码中,您需要删除 中的括号。使用括号,您将调用 textx 并将其结果作为参数传递给 change_text;如果没有括号,您将传递对 testx 的引用。var box = new change_text("HELLO, WORLD", 'theboxtochange', testx());
testx()
评论