【问题标题】:Can anyone please explain this code?谁能解释一下这段代码?
【发布时间】:2017-04-22 20:29:44
【问题描述】:

我正在 Egghead.com 上学习编码,但我很难理解这段代码,特别是第 4 行,我们在哪里定义了处理程序?

谢谢!

1    var deliveryBoy = {
2    name: "John",

3       handleMessage: function (message, handler) {
4        handler(message);
5      },
6    
7      receive: function () {
8        var that = this;
9    
10        this.handleMessage("Hello, ", function(message) {
11          that.name 
12    
13         console.log(message + that.name);
14        })
15      }
16    }
17    deliveryBoy.receive();

【问题讨论】:

  • 你是要在一个答案中解释js?
  • handler 是赋值给传入函数的第二个参数的变量名,本身就是一个可以调用的函数
  • handler 是传递给handleMessage 的函数。该函数在this.handleMessage 调用中定义。这是一个回调函数。
  • 它是 handleMessage 函数的第二个参数,它在第 10 行定义(并传递):其中写着 function(message) { ... JS 不像 Java 允许在函数的参数中传递函数...
  • deliveryBoy!=deliverBoy

标签: javascript function object


【解决方案1】:

'handler' 在第 3 行定义(它是第二个参数)。 deliveryBoy.receive 正在调用 deliveryBoy.handleMessage 并传入数据和函数。第 17 行正在调用 deliveryBoy.receive 以启动该过程。这现在有意义吗?

【讨论】:

  • 谢谢,现在更有意义了!
【解决方案2】:

在 Javascript 中,您可以将函数作为参数传递给另一个函数。

在您的代码 sn-p 中,检查第 10 行。这里您将一个函数作为参数传递给 deliveryBoy 对象的 handleMessage(其值是一个函数)属性。

现在检查代码中的第 3 行。 handleMessage 属性持有一个函数作为其值。此函数期望传递参数(消息,处理程序)。 第二个参数将保存在第 10 行的函数调用中传递的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2014-09-16
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多