Funkcje w JavaScript to są obiekty, czyli posiadają swoje metody i właściwości.

Właściwość length

Właściwość length funkcji zwraca liczbę jej zadeklarowanych parametrów.

function add(a, b) {
    return a + b;
}

console.log(add.length); // 2

W powyższym przykładzie funkcja add ma dwa parametry, więc jej właściwość length wynosi 2.

Właściwość name

Właściwość name funkcji zwraca nazwę funkcji. Zachowanie tej właściwości różni się w zależności od tego, czy funkcja jest zadeklarowana jako deklaracja funkcji czy jako wyrażenie funkcyjne.

Deklaracja funkcji

Opis deklaracji funkcji

function greet() {
    console.log("Hello!");
}

console.log(greet.name); // "greet"

W powyższym przykładzie nazwa funkcji greet jest dostępna za pomocą właściwości name.

Wyrażenie funkcyjne

Opis wyrażenie funkcyjnego

Przykład anonimowego wyrażenia funkcyjnego

const greet = function() {
    console.log("Hello!");
};

console.log(greet.name); // "greet"

W tym przypadku funkcja anonimowa przypisana do zmiennej greet przyjmuje nazwę zmiennej jako swoją nazwę.

Przykład nazwanego wyrażenia funkcyjnego

const greet = function greetingFunction() {
    console.log("Hello!");
};

console.log(greet.name); // "greetingFunction"

W powyższym przykładzie funkcja nazwana greetingFunction jest przypisana do zmiennej greet, a właściwość name zwraca nazwę funkcji, czyli greetingFunction.

Właściwość prototype

Każda funkcja w JavaScript ma właściwość prototype, która jest używana głównie w kontekście programowania obiektowego do tworzenia obiektów za pomocą konstruktorów.

function Person(name) {
    this.name = name;
}

Person.prototype.greet = function() {
    console.log(`Hello, my name is ${this.name}`);
};

const alice = new Person('Alice');
alice.greet(); // "Hello, my name is Alice"

Metoda toString()

Metoda toString() zwraca reprezentację kodu źródłowego funkcji w formie łańcucha znaków.

function add(a, b) {
    return a + b;
}

add.toString();//'function add(a, b) {\n    return a + b;\n}'

Metody call() i apply()

Metody call() i apply() w JavaScript są używane do wywoływania funkcji z określonym kontekstem (this) i argumentami. Obie metody pozwalają zmieniać kontekst this funkcji.

call()

Metoda call() wywołuje funkcję, podając najpierw kontekst this, a następnie argumenty jako oddzielne wartości.

function greet(greeting, punctuation) {
    console.log(greeting + ', ' + this.name + punctuation);
}

const person = { name: 'Alice' };

greet.call(person, 'Hello', '!'); // "Hello, Alice!"

W tym przykładzie funkcja greet jest wywoływana z kontekstem person, co sprawia, że this wewnątrz funkcji odnosi się do obiektu person.

apply()

Metoda apply() działa podobnie do call(), ale przekazuje argumenty jako tablicę.

function greet(greeting, punctuation) {
    console.log(greeting + ', ' + this.name + punctuation);
}

const person = { name: 'Alice' };

greet.apply(person, ['Hi', '.']); // "Hi, Alice."

Metoda bind()

Metoda bind() w JavaScript jest używana do tworzenia nowej funkcji, która, gdy jest wywoływana, ma przypisany określony kontekst this oraz opcjonalnie początkowe argumenty. Metoda bind() nie wywołuje funkcji od razu. Zamiast tego, zwraca nową funkcję, której kontekst this jest związany (ang. „bound”) z podanym obiektem.

const person = {
    name: 'Alice',
    greet: function(greeting) {
        console.log(greeting + ', ' + this.name);
    }
};

const greetAlice = person.greet.bind(person);
greetAlice('Hello'); // "Hello, Alice"

W tym przykładzie:

  1. Obiekt person ma metodę greet.
  2. Tworzymy nową funkcję greetAlice z kontekstem this ustawionym na person za pomocą bind().
  3. Kiedy greetAlice jest wywoływana, kontekst this odnosi się do person, więc this.name to 'Alice'.

Używanie bind() do przekazywania argumentów

Metoda bind() pozwala również przekazać początkowe argumenty, które są automatycznie dołączane do argumentów nowej funkcji.

function multiply(a, b) {
    return a * b;
}

const double = multiply.bind(null, 2);

console.log(double(5)); // 10
console.log(double(10)); // 20

W tym przykładzie:

  1. Funkcja multiply przyjmuje dwa argumenty.
  2. Tworzymy nową funkcję double, która ma ustawiony pierwszy argument a na 2.
  3. Kiedy double jest wywoływana, używa wartości 2 jako pierwszego argumentu i wartości przekazanej jako drugiego argumentu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *