Birisi bu işlevi açıklayabilir mi? Ben bind(Function.prototype.bind)
bindbind() işlevini açıkla
cevap
Tamam halini sordum,
var bindedContextFunc = bindbind(function)(context);
bindedContextFunc(args);
Ama bu fonksiyonları oluşturma işlemini anlamıyorum:
var bindbind = Function.prototype.bind.bind(Function.prototype.bind);
Ben üretmek sonucu anlıyoruz. Biz kimin (basitleştirilmiş) kodu burada üç kez Function.prototype.bind
işlevi var
function bind(context) {
var fn = this;
return function() {
return fn.apply(context, arguments);
}
}
Ben kısmi uygulaması dolu bir daha işlevsel bir tarzda kısaltmak olacaktır: bağlamak fn (bağlam) -> fn bağlam.
Peki ne işe yarıyor? bind.call(bind, bind)
var veya bağlama (bağlama) bağlamanız gerekir. Bunu bağlama ağına bağlamak için genişletelim. Ya şimdi ona bazı argümanlar sağlasaydık?
bağlama bağlanma (bağlama) (fn) (bağlama)
bağlama bağlanma(fn) (bağlama)
bağlama (bağlamda fn)
.210FN'nin bağlam
İşte geldik.
bindbind = bağlamak bağlamak (bağlama)
bindfn = bindbind şey (fn)
//
bağlamak fn: Biz sonuç daha net hale getirmek için bazı değişkenlere bu atayabilirsiniz contextbindfn = bindfn (içerik)
//
fn içeriksonuç = contextbindfn şey (prmtr)
//
fn bağlam (prmtr)
, aynı sonuca ulaşmak için, bu çözümün neden daha iyi olduğunu (ya da muhtemelen niçin var olduğunu sormalıyız), eğer fn.bind (bağlam) (args) 'ı yapabilirsek, detaylandırır mısınız? – asdf
"bindfn" yi geri döndürmek isteyen bir api'ye sahip olduğunuzu varsayarsak, henüz bağlamı bilmez. Daha sonra, uzun - yani 'bindbind (fn)' olan 'Function.prototype.bind.bind (fn)' - işlevini kullanabilirsiniz. Gerçi, gerçek bir dünya uygulaması olup olmadığından emin değil. – Bergi
- 1. C işaretçisi anomalisi, lütfen açıkla
- 2. CSS yorumlarını bulan regex'i açıkla
- 3. Mac OSX'te JVM Dizin Düzenini Açıkla Leopard
- 4. omurga nesnesini ve sınıf oluşturma desenini açıkla
- 5. Django'daki sorgu kümelerinde "açıkla" çalıştırmanın kolay yolu
- 6. Github'un Trafik sekmesindeki klonlar bilgisini açıkla
- 7. JDBC Oracle - Sorgu için sorgu açıkla planını ayarlama
- 8. Belirli bir URL'yi (Chrome'da) açıkla düğmesi Javascript yinelemesinde tıklatın
- 9. (Z3Py) işlevini
- 10. C++ işlevini
- 11. Backbone.history işlevini, rota işlevini tetiklemeden geri dönmek için kullanın
- 12. Başlatma işlevini kullanarak Xpath
- 13. '$ (this)' İşlevini Kullanma
- 14. C++ 11 - sıralama işlevini
- 15. İşte PostgreSQL işlevini
- 16. Bash işlevini nasıl silerim?
- 17. JavaScript işlevini seç
- 18. Python: işlevini kullanma
- 19. JQuery işlevini nasıl adlandırabilirim?
- 20. Delphi: Hayır VarIsBoolean() işlevini?
- 21. Javascript işlevini getComputedTextLength()
- 22. Finish jQuery İşlevini
- 23. Çapraz denetleyici işlevini çağırma
- 24. Bir üye işlevini çağırma
- 25. PopToViewController işlevini nerede çağırabilirim?
- 26. tm's Corpus işlevini R
- 27. Arayan işlevini nasıl buluyorsunuz?
- 28. Çoklu işlem işlevini zamanlama
- 29. python'daki dll işlevini çağırıyor
- 30. Recv_from işlevini engelleme yapma
"bağlam" "thisValue" veya benzeri gibi daha iyi olacaktır. – RobG
@RobG: "* içerik *" ile ilgili sorun nedir? Sık kullandım ve teknik terimden daha açıklayıcı olduğunu düşünüyorum. Benim için okuyacağımız bir bağlantı var mı? – Bergi
ECMAScript'te, "içerik", [yürütme içeriği] ile ilgili olarak kullanılır (http://ecma-international.org/ecma-262/5.Yürürlükte olan kodun tüm parametrelerini ve kapsamını içeren 1/# sn-10). Bu 'bu' değerini içerir ve kodun nasıl yazıldığını kontrol eder. Statik. Tersine, bir fonksiyonun 'this' değeri dinamiktir ve fonksiyonun nasıl çağrıldığı ile tamamen ayarlanır, fonksiyonun nasıl ilan edildiğine veya intialised olduğuna dair bir şey yoktur. Yani "bu" bağlamı aramak uygun değildir. Bunu kullananların, kullandıkları dilin özelliklerini okumasına ve anlamasına ihtiyacı vardır. – RobG