bindowanie / stosowanie konstruktorów w JavaScript

Szukałem rozwiązań do wywoływania konstruktorów JavaScript z dowolną liczbą argumentów i znalazłem kilka dobrych postów SO, co doprowadziło mnie do przekonania, że ​​te trzy wywołania powinny działać tak samo. Jednak przynajmniej w rhino i node.js nie:

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])

Pierwszy ma pożądany rezultat:

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

Ale pozostałe dwa nie:

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)

Więc coś gdzieś poszło. Myśli na co? Czy mieszanie takich rzeczy to zły pomysłapply, bindi / lubcall znew?

questionAnswers(2)

yourAnswerToTheQuestion