2012-03-30 6 views
3

Ich verwende CoffeeScript zusammen mit der JS-Spleißfunktion. Mein Verständnis der JS Spleißfunktion ist, dass es die Objekte zurückgeben sollte, die gespleißt wurden, und das ursprüngliche Array ändern. Dies scheint bei einfachen Arrays in Ordnung zu sein, aber wenn ich Objekte zum Array hinzufüge, gehen die Dinge kaputt. Nachfolgend finden Sie eine vereinfachte Fall mit Kommentaren:Das von der Spleißstelle zurückgegebene Ergebnis in CoffeeScript

Und ein Link code

#Class that will go in array 
class Thing 
    do: -> 
    alert "Hi" 

a = new Thing 
b = new Thing 

arr = [] 

arr.push(a) 
arr.push(b) 

arr[0].do() # this works 

result = arr.splice(0,1) 
alert result.do() # this does not work 

Hat Spleiß tun etwas, das dies nicht funktionieren macht? Wenn jemand eine Idee über den Grund hat, dass dies geschieht und/oder eine Lösung, würde ich sehr dankbar sein,

+0

'splice()' doc https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice – andi

Antwort

4

Array.splice() liefert eine Array des Elements (s) entfernt; wie sie das Potenzial entfernen mehrere über den zweiten Parameter hat:

dieser Weil, sollten Sie alert result[0].do();

Working example: http://jsfiddle.net/Cjtaa/

+0

ist mootols auf jsfiddle gleichbedeutend mit kaffee skript? – andi

+0

@andi: Nein. MooTools ist ein JavaScript-Framework, ähnlich wie BackBone, Angular, Knockout usw. Erweitern Sie in JsFiddle den Bereich "Languages" in der linken Einstellungsleiste und Sie sehen, dass Sie den "JavaScript" -Editor ändern können stattdessen auf "CoffeeScript". – Matt

1

splice gibt einen array mit werden.

So was Sie tun müssen:

result = arr.splice(0,1) 
alert result[0].do()