2016-12-07 11 views
-5

私は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(); 
+0

1つの回答でjsを説明するよう求めていますか? – Mahi

+0

handlerは、関数に渡される2番目の引数に割り当てられた変数名であり、それ自身が呼び出せる関数です。 – kinakuta

+0

'handler'は、' handleMessage'に渡される関数です。関数は 'this.handleMessage'呼び出しで定義されています。これはコールバック関数です。 – Xufox

答えて

0

'handler'は、第3行目で定義されています(2番目のパラメータです)。 deliveryBoy.receiveはdeliveryBoy.handleMessageを呼び出してデータと関数を渡しています。 17行目はdeliveryBoy.receiveを呼び出してプロセスを開始します。これは今意味があるのですか?

+0

申し訳ありませんが、回答を開始したときにすべてのコメントが表示されませんでした... – MattCash

+0

ありがとう、それは今より多くの意味があります! –

0

Javascriptでは、関数を引数として別の関数に渡すことができます。

あなたのコードスニペットでは、行番号10を確認してください。ここでは、引数として関数を渡しています(その値は関数)deliveryBoyオブジェクトのプロパティです。

コード内の行番号3を確認してください。 handleMessageプロパティはその値として関数を保持しています。この関数は渡される引数(message、handler)を期待しています。 2番目の引数は、行番号10の関数呼び出しで渡された関数を保持しています。

関連する問題