:sparkles: PWA :sparkles:
Twarz autora bloga

Piotr Kowalski

Organizator WarsawJS Trener YouTuber

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