如何在第一个函数参数中将一个函数传递给另一个函数?

How would I pass one function to another function in the first functions parameters?

提问人:Aaron 提问时间:5/9/2011 更新时间:5/9/2011 访问量:964

问:

如何将 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()');
JavaScript的

评论


答:

5赞 T.J. Crowder 5/9/2011 #1

只需给出其名称(不带引号或引号):

var box = new change_text("HELLO, WORLD", 'theboxtochange', testx);

函数是第一类对象,因此它们的名称是对它们的引用。

在 中,你可以使用你对它的引用来调用它 (),就像指向函数的任何其他符号一样,所以:change_textfunc

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
最后一行确实调用了您传入的函数,将其称为实例的伪方法。你可能会觉得这很有趣:神话方法box
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()