JavaScript çift iki nokta üst üste (bağlama operatörü)


129

Bildiğiniz gibi, .bind()işlev için bir kısayol önerisi var , böylece yazabilirsiniz:

::this.handleStuff

ve es5'te şöyle çalışacak:

this.handleStuff.bind(this)

Sorum şu: argümanları bu şekilde iletmek mümkün olacak mı?

Bunu yukarıda belirtilen kısayolla yazmanın bir yolunu kastediyorum:

this.handleStuff.bind(this, 'stuff')

React'te oldukça yaygın bir kalıp, bu yüzden onu biraz kısaltmak güzel olurdu.


1
Kısmi uygulamadan mı bahsediyorsunuz?
Ben Aston

Başka bir özel teklif için iyi bir fikir gibi görünüyor.
Greg Herbowicz

Yanıtlar:


154

Hayır. Bağlama operatörü ( teknik özellik önerisi ) iki türden gelir:

  • Yöntem çıkarma

    ::obj.method      obj.method.bind(obj)
  • "sanal yöntem" çağrıları

    obj::function     function.bind(obj)
    obj::function(…)  function.call(obj, …)
    

Hiçbirinde kısmi uygulama özelliği yoktur . İstediğiniz şey için bir ok işlevi kullanmalısınız:

(...args) => this.handleStuff('stuff', ...args)  this.handleStuff.bind(this, 'stuff')

4
( Kısmi başvuruyu destekleme konusunda bazı tartışmalar oldu )
Bergi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.