Język JavaScript nie jest językiem obiektowym klasycznie, lecz prototypowo. Dodawanie metod do obiektu odbywa się w inny sposób niż jest to np. w Javie. Dlatego przez ogromną ilość programistów, którzy zaczynali od języka klasycznego transfer do składni JavaScript jest bolączką.

Przykład
function Carousel(){
this.run = function () {
// pass
}
}
Carousel.prototype.move = function () {
// pass
};
var carousel = new Carousel();
carousel.move();
Ale zamiast tego brzydkiego zapisu jakim jest
Carousel.prototype.move
Douglas Crockford
utworzył
ładniejszy oraz bardziej naturalny zapis dodawania metod do obiektu,
pomijając tym samym słowo kluczowe prototype
.
Istnieje też stworzenie metody w obiekcie poprzez słowo kluczowe
this
, ale po utworzeniu obiektu będzie ono na sztywno
przypisane z danym obiektem. Dlatego dodanie metody prototypowo zdecydowanie
wykorzystuje pełną siłę języka.
Function.prototype.addMethod = function (name, func) {
this.prototype[name] = func;
return this;
};
Po dodaniu takiego rozwiązania do obiektu Function
, dodawanie
metod przedstawia się następująco:
function Carousel() {
this.run = function () {
// pass
};
}
Carousel.addMethod("move", function () {
// pass
});
var carousel = new Carousel();
carousel.run();
carousel.move();