这适合您对回调的定义吗?

时间:2009-03-05 16:50:45

标签: javascript oop callback definition

回调的定义:

在Component中设置为属性的函数。并且通常在组件上发生某些事件时调用。

例如:

如果您希望在用户点击Component componentB 时显示一个对话框,其中显示“我被点击了”,您可以编写一个存储为变量的方法这样做:

var mouseDownCallbackFunction = function() {
    alert("I was clicked!");
};

下一步,您可以在组件中设置此功能,如此...

// Set the Component to display the dialog when the 
// user presses the mouse down on it.
componentB.setMouseDownCallback(mouseDownCallbackFunction);

这会导致 mouseDownCallbackFunction 在单击该组件时在警告框中显示“我被点击”

5 个答案:

答案 0 :(得分:3)

是的,这是描述回调的确切定义......

答案 1 :(得分:3)

在JavaScript中,从技术上讲,这是一个闭包,因为它可以绑定到引用范围内的任何变量。

但是闭包只是一种更好的回调形式,所以是的,这是一个回调。 C中的回调更原始,只提供对类型化函数的指针引用,而不绑定任何上下文。

答案 2 :(得分:2)

是的,回调是一个定义在比调用更高级别的函数。您的客户端代码会创建该函数,然后将其作为参数传递给componentB,以便componentB稍后再调用它。

答案 3 :(得分:2)

在C中,这将是一个有效的回调。但是,我不熟悉JavaScript,不知道是不是因为我不确定变量是如何处理它们的内存位置的。

在C / C ++中,您可以声明一个void指针:

void aFunction()
{
     do stuff
}

int main()
{
    void* myCallback = &aFunction; 
    componentB.setMouseDownCallback(myCallback);
}

会工作吗?

然而,尽管我缺乏JavaScript知识,但我确实知道

componentB.setMouseDownCallback(function() {
        alert("I was clicked!");
        };
);

也有效。

编辑在第二句中添加了一句:“我不是那么熟悉”

答案 4 :(得分:-1)

是的,这是一个回调。