2016-03-31 15 views
0

Ja, ich weiß, es gibt viele Beiträge zu diesem Thema, aber ich verstehe nicht die ausgewählte Antwort von this post. Vor allem, warum ist es notwendig, return object?Überprüfen, ob eine Funktion vom Typ ist Funktion in Javascript

Warum sollte nicht etwas wie Object.prototype.toString.call(myFunc) ausreichend sein, wie von MDN beschrieben?

+0

@DmitriPavlutin: Das ist aber eigentlich nicht notwendig; Beide funktionieren gut. – SLaks

+0

Der Punkt der Duck-Typisierung sollte sein, dass es dir egal ist, ob es eine 'Funktion' ist, nur ob es' apply' und 'call' implementiert ... – ssube

Antwort

1

warum ist es notwendig, return object?

Es ist nicht notwendig object &&, sondern eine Abkürzung für falsy Werte zu tun, die den Methodenaufruf für Werte wie null vermeidet. Natürlich, wenn Sie für die Geschwindigkeit suchen, sollten Sie wahrscheinlich für typeof object == "function" gehen

Warum wäre etwas nicht wie Object.prototype.toString.call(myFunc) ausreichend?

Es ist ausreichend.

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

Diese Konstruktion einfach überprüft, ob nicht objectnull oder undefined (im allgemeinen falsy) ist.
Auf diese Weise ist es schneller, weil JavaScript den getClass() Aufruf auf einem Falsy object nicht auswertet.

Verwandte Themen