Normalerweise, wenn ich den Typ eines Objekts überprüfen möchten (ob es ein Array ist, ein NodeList, oder was auch immer), ich folgendes verwenden:Warum funktioniert `{} .toString.apply (array)` nicht?
var arr = [] // I don't do this, but it's for the sake of the example
var obj = {}
obj.toString.apply(arr) // This works
Die Frage ist: Warum kann ich nicht tun folgende?
Ich bekomme nicht, wo der Syntaxfehler ist.
Ich kann zwar mit []
etwas näher tun, die folgenden Werke:
var nodeList = document.getElementsByClassName('foo')
[].forEach.call(nodeList, function(bar) { console.log(bar) }) // Works
So ... Ich bin verwirrt.
Sie vergessen() in toString()? – kappa
Nein, siehe @Ray Toals Antwort. Das Hinzufügen der Klammern würde zu einem Syntaxfehler führen (Objekt hat keine Methode 'Anwenden'). –
Ahh .. ich habe das nicht gedacht, es ist korrekt – kappa