【问题标题】:Does this fit your definition of a Callback?这符合您对回调的定义吗?
【发布时间】:2010-10-11 13:36:22
【问题描述】:

回调定义:

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

例如:

如果您希望在用户单击组件 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 在组件被点击时在警告框中显示“我被点击”

【问题讨论】:

  • 运行这个会发生什么?
  • 当用户点击组件时,运行这段代码后,会弹出一个对话框“我被点击了”
  • 请注意,您也可以使用 lambda 也称为匿名函数,代码更少,如下所示:componentB.setMouseDownCallback( function() { alert("I was clicked!"); });跨度>
  • 啊,我想知道 Lambda 函数是什么……好吧,搞清楚了!谢谢!

标签: javascript oop callback definition


【解决方案1】:

是的,这是一个回调。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        在 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!");
                };
        );
        

        也是有效的。

        EDIT在第二句中加了一个not:“我不太熟悉”

        【讨论】:

        • 谢谢!我在一家 C++ 商店工作,我是他们的网络人……这将极大地帮助我争论我的案子!谢谢斯塔科!
        【解决方案5】:

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

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

        【讨论】:

        • 嗯...那我想知道闭包和回调有什么不同?
        • 另一个问题得到了很好的回答,这就是我在第一个声明中提到闭包绑定变量的意思,而 C 回调只是一个函数点。
        猜你喜欢
        • 2010-10-11
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多