SORU
16 Mart 2013, CUMARTESİ


js () Ara & Uygula() vs bind()?

Ben zaten apply call this ayarlar benzer işlevleri (işlev, bağlam).

Bağımsız değişkenler (manuel vs dizi) göndeririz . farkı ile :

Ama ne zaman bind() yöntemi kullanmalıyım ?

   var obj = {
      x: 81,
      getX: function() { return this.x; }
    };



    alert(obj.getX.bind(obj)());
    alert(obj.getX.call(obj));
    alert(obj.getX.apply(obj));

jsbin

CEVAP
16 Mart 2013, CUMARTESİ


Bu işlev, daha sonra belirli bir bağlam ile anılmak istiyorsanız, olaylar içinde yararlı.

Arama/bind daha sonra çalıştırıldığında özgün işlevini çağırmak için doğru bağlam ayarlamak olacak bir işlevi ise arama fonksiyonu hemen uygulayın. Bu şekilde zaman uyumsuz geri aramaları ve olaylar bağlamında koruyabilirsiniz.

Bu çok yaparım:

function MyObject(element) {
    this.elm = element;

    element.addEventListener('click', this.onClick.bind(this), false);
};

MyObject.prototype.onClick = function(e) {
     var t=this;  //do something with [t]...
    //without bind the context of this function wouldn't be a MyObject
    //instance as you would normally expect.
};

Üye bir yöntem geçmek istiyorum bu yoğun zaman uyumsuz geri aramaları için node.js kullandım ama hala içerik uyumsuz eylemi başlatan örnek olmak istiyorum.

Bağlama basit, naif bir uygulama gibi olacaktır:

Function.prototype.bind = function(ctx) {
    var fn = this;
    return function() {
        fn.apply(ctx, arguments);
    };
};

Orada daha fazla (diğer argüman geçişi gibi), ama bu konuda daha fazla bilgi edinin ve gerçek uygulama on the MDN görebilirsiniz.

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Perihelion

    Perihelion

    23 NİSAN 2008
  • Top10Series

    Top10Series

    26 Kasım 2008