Konstruktoren in JavaScript binden / anwenden

Ich suchte nach Lösungen für den Aufruf von Javascript-Konstruktoren mit einer beliebigen Anzahl von Argumenten und fand einige gute SO-Posts, die mich zu der Annahme veranlassten, dass diese drei Aufrufe gleich funktionieren sollten. Zumindest in rhino und node.js ist dies jedoch nicht der Fall:

1. f = Date.bind(Date, 2000,0,1)
2. g = Date.bind.call(Date, 2000, 0, 1)
3. h = Date.bind.apply(Date, [2000, 0, 1])

Der erste hat das gewünschte Ergebnis:

print(new f()) //=> Sat Jan 01 2000 00:00:00 GMT-0500 (EST)

Aber die anderen beiden tun es nicht:

print(new g()) //=> Thu Feb 01 1900 00:00:00 GMT-0500 (EST)
print(new h()) //=> Wed Jun 01 1904 00:00:00 GMT-0400 (EST)

Irgendwo ist also etwas durcheinander geraten. Gedanken über was? Ist es nur eine schlechte Idee, Dinge wie zu mischen?apply, bindund / odercall mitnew?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage