Czytam kod ATC Douglasa Crockforda JavaScript: Dobre części, i jestem trochę zdezorientowany. W rozdziale 4, w sekcji Rozszerzenia, tworzy skrót do dodawania metody.Rozszerzanie typów w JavaScript
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
Mówi:
przez zwiększanie Function.prototype z „metoda” metoda, już nie trzeba wpisać nazwę właściwości prototypu. Ten kawałek brzydoty można teraz ukryć.
Następnie używa go do dodania metody liczby całkowitej do prototypu liczbowego.
Number.method('integer', function() {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});
document.writeln((-10/3).integer()); // -3
Jestem trochę mylić tutaj ... ponieważ dodaliśmy „metoda” metodę Funkcja prototypu w , nie Prototyp Number. Według mojej wiedzy obiekt Number nie dziedziczy po prototypie Function (choć może się mylę). Widzę, że to działa, ale nie rozumiem, dlaczego obiekty Number są w stanie wykorzystać tę metodę "metody" do dodania ... metod.
To jest fajne pytanie.Zajęło mi trochę czasu, aby zrozumieć kod, ale w końcu go dostałem. – Paul
dzięki wszystkim za dobre odpowiedzi. teraz ma to sens. –
Następnym pytaniem jest, jaki jest punkt pierwszego fragmentu kodu. Chyba nie rozumiem jego cytatu. W jaki sposób ta metoda "metody" jest wydajniejsza lub lepsza niż bezpośrednie bezpośrednie dodawanie metody do prototypu Number? W ten sposób: Number.prototype.integer = function() { return Math [this <0? "ceil": "floor"] (ten); } –