2016-03-31 41 views
0

Evet, bununla ilgili pek çok ileti olduğunu biliyorum, ancak this post'un seçilen yanıtını anlamıyorum. Özellikle, neden return object için gerekli?javascript işlevinde bir işlev olup olmadığını kontrol etme

Object.prototype.toString.call(myFunc) gibi bir şey neden MDN tarafından açıklandığı gibi yeterli olmaz?

+0

@DmitriPavlutin: Bu aslında gerekli değil; ikisi de iyi çalışıyorlar. – SLaks

+0

Ördek yazmanın amacı, 'İşlev', sadece 'uygulamak' ve 'çağırma' uygulayıp uygulamadığı umurumda değil ... – ssube

cevap

1

return object neden gerekli?

O object && yapmak gerekli değildir

, ancak bu tür null olarak değerler için yöntem çağrısı önler falsy değerler için bir kısayol. Hız için arıyorsanız Tabii, muhtemelen Neden Object.prototype.toString.call(myFunc) gibi bir şey yeterli olmaz typeof object == "function"

için gitmeli?

Bu yeterlidir. objectnull veya undefined (genellikle falsy) ifade etmediği takdirde

0
return object && getClass.call(object) == '[object Function]' 

Bu yapı, sadece doğrular.
Bu şekilde daha hızlıdır, çünkü JavaScript, object falsy'deki getClass() çağrılarını değerlendirmez.