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

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • Jonathan Flavell

    Jonathan Fla

    1 HAZİRAN 2006