2017-08-15 3 views
0

bindは、このメソッドを渡されるオブジェクトにバインドすることを知っています。しかし、私がここで理解していないのは、クラス名をバインドに渡すのはなぜですか?この声明は、「all = Promise.all.bind(Promise)」を意味しますか?

私は専門家から得た1つの答えは、「これは機能を「独立」にすることでした。これは再びわかりませんでした。私は完全に愚かなことを理解しないと1つの声明を完全に怒って行くかもしれないが、誰もこれを説明してください?

答えて

4

これは「クラス名」ではないオブジェクトです。 (具体的には、機能;機能は、さらにより具体的コンストラクタ機能はJavaScriptのオブジェクトである。)

Promise.all(...)Promiseオブジェクト上allプロパティを検索し、Promisethisセットとallを呼び出します。だから、ちょうどall(...)でそれをするには、我々はそれを別の方法と呼んでも、Promiseとなるように関数を束縛する必要があります。それはall = Promise.all.bind(Promise)のことです。

我々だけall = Promise.allをした場合、我々はPromiseを参照しています通話中にall(...)thisを呼び出したときに、その後、(それがstrictモードでグローバル緩いモードでオブジェクトまたはundefinedだろう)。 allrelies onthis約束事のためのコンストラクタ関数(例えば、Promise)を参照してください。呼び出されたときに、ということを保証するbを呼び出す、という新機能(a)を返しa = b.bind(c):私はbindはレッツは、という別の言い方を

を渡されるオブジェクトにメソッドにこれを結合することを知っている

thisは、コール中にcに設定されます。その結果はバインドされた関数と呼ばれ、そのthisの値がバインドされているためです。

もご覧ください(!GAHその最後の段落は、 `A`と混同 'B'を持っていると思われる場合は、リフレッシュを打つ。)

+0

* * –

+0

さて、私は今それを得たと思います!だから...親から関数を "抽出"する場合、予期しない結果が得られないように、 'this'を適切なオブジェクトにバインドするようにしてください。この場合、 'all'関数' this'を実際の親に割り当てて自律的になるようにします。 – Manu

関連する問題