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));
CEVAP
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.
Vim: dizindeki dosya Ayarları Uygula...
Neden derleme zamanında bind değişkenl...
Orada C 11 std arasında herhangi bir f...
Gerçek hayatta DIŞ / ÇAPRAZ kullanmak ...
AngularJS : kapsam.$ve kapsamı. dikkat...