2016-03-31 21 views
0

はい、これにはたくさんの投稿がありますが、選択した答えがthis postであるとは分かりません。特に、なぜそれが必要ですreturn object関数がjavascriptの関数Functionであるかどうかを調べる

Object.prototype.toString.call(myFunc)のようなものが、MDNで説明されているように、なぜ十分ではないのですか?

+0

@DmitriPavlutin:これは実際には必要ありません。彼らはどちらもうまく動作します。 – SLaks

+0

ダックタイピングのポイントは、 'Function'の場合は気にしないで' apply'と 'call'を実装するかどうかだけです。 – ssube

答えて

1

return objectはなぜ必要ですか?

それはobject &&を行う必要がありませんが、そのようなnullなどの値のためのメソッド呼び出しを回避falsy値のショートカット。あなたはスピードを探している場合はもちろん、あなたはおそらく、なぜObject.prototype.toString.call(myFunc)のようなものが十分ではないtypeof object == "function"

のために行くべきですか?

これで十分です。 objectnullまたはundefined(一般falsy)でない場合

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

この構成は単に検証します。
JavaScriptはgetClass()の呼び出しを偽のobjectで評価しないため、この方法は高速です。

関連する問題