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

  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011
  • Grace Su

    Grace Su

    6 Ocak 2006
  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010