Jeśli spojrzymy na najnowsze źródła jQuery na http://code.jquery.com/jquery-latest.js widzimy następujące:Dlaczego jQuery robi to w implementacji funkcji konstruktora?
var jQuery = function(selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context);
}
Moje zrozumienie nowego hasła w Javascript jest zasadniczo JavaScript przechodzi funkcja pusty obiekt {}
a funkcja ustawia rzeczy na nim poprzez this.blah
.
Również z mojego zrozumienia new
różni się od .call
/.apply
itd. Tym, że obiekt powrotu ma również prototyp ustawiony na ten z funkcją. Tak więc wartość zwracana powinna mieć prototyp taki sam jak jQuery.prototype.init.prototype
(lub jQuery.fn.init.prototype
). Jednak z tego, co widzę, jego prototyp jest ustawiony na jQuery.prototype
, a więc wszystkie polecenia dostępne do pracy na planie.
Dlaczego tak jest? Czego mi brakuje w moim rozumieniu?