Przejdź do treści

Dodawanie metody do obiektu Function poprzez "addMethod"

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ą.

Baner promujący artykuł

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();