To, powiązaj, zadzwoń i zastosuj w JavaScript | Wyjaśnione

To, powiązaj, zadzwoń i zastosuj w JavaScript | Wyjaśnione
Wiązanie, wywołanie i aplikuj są naprawdę przydatnymi i specjalnymi metodami, które pomagają nam osiągnąć pożyczenie funkcji i metod z jednego obiektu do drugiego za pomocą odniesienia „Ten". To jest trochę zaawansowany temat, dlatego będziemy powoli.

JavaScript i wiele innych języków programowania używają słowa kluczowego Ten przekazać odniesienie obiektu/klasy nadrzędnego do jego funkcji i metod w nich. Podczas gdy metody połączenia, wywołujące i zastosowania działają po przekazaniu odniesienia do atrybutów pożyczki z jednego obiektu do drugiego. Funkcja wiązania, połączenia i zastosowania została dodana w JavaScript w wydaniu ECMA2015.

Odniesienie „to”

Słowo kluczowe Ten ma bardzo specyficzne znaczenie w JavaScript, odnosi się do obiektu, który nazywa funkcję. Jeśli pracujemy z metodą konstruktora, to słowo kluczowe Ten odnoszą się do klasy i jej właściwości, jeśli pracujemy z niektórymi elementami DOM Ten Słowo kluczowe odnosi się do globalnych wartości DOM.

Aby to zademonstrować, utwórz następujący obiekt za pomocą następujących wierszy:

var person =
Imię: „John Doe”,
Wiek: 25,
Oznaczenie: „Audytor”,
PrintName: function ()
konsola.Log (to.nazwa);
,
;

Jak widać, wewnątrz osoby obiektowej mamy funkcję Nazwa wydruku które wydrukują nazwę osoby i wewnątrz konsola.dziennik() Widzimy, że mamy linię:

Ten.nazwa;

Ten Słowo kluczowe tworzy odniesienie do obiektu i mówi kompilatorowi, aby pobierał „nazwę” z tego konkretnego obiektu.

Zadzwoń i zastosuj metody

Dzwonić I stosować Oba można zdefiniować jednocześnie, ponieważ mają prawie dokładnie tę samą mechanikę roboczą. Wywołanie i zastosowanie są używane do pożyczania funkcji, środków pożyczania funkcji, aby użyć funkcji innego obiektu i korzystanie z odniesienia innego obiektu.

Aby lepiej zrozumieć tę koncepcję, utwórz dwa różne obiekty za pomocą następujących wierszy kodu:

var person1 =
Imię: „John Doe”,
Wiek: 25,
Oznaczenie: „Audytor”,
PrintName: function ()
konsola.Log (to.nazwa);
,
;
var person2 =
Imię: „Baba Yaga”,
Wiek: 22,
Oznaczenie: „Bezrobotne”,
;

Jak widać w fragmencie kodu, mamy prawie tę samą strukturę zarówno obiektów, jak i tych samych par kluczowych osoba 1 ma funkcję Nazwa wydruku chwila osoba 2 nie. Ale jeśli chcesz wydrukować „nazwę” osoba 2 obiekt, możesz to zrobić za pomocą metody „printName” z osoba 1 obiekt i dla „Ten„Odniesienie, przechodzisz w odniesieniu do obiektu osoba 2.

Składnia połączenia i Zastosuj:

Składnia obu tych metod jest prawie identyczna:

Dla metody połączenia składnia jest jako:

OBJ1.funkcjonować.Call (RecerenceOfObject2, Arg1 Arg2, Arg3…);

Dla metody zastosowania składnia wynosi:

OBJ1.funkcjonować.Apply (RefeceFObject2, [arg1, arg2, arg3,…]);

Notatka: Jeśli funkcja, którą pożyczasz, wymaga dodatkowych argumentów, to w Metoda wywołania przekazujesz argumenty oddzielone przecinkiem „”, aw przypadku metody zastosowania przekazujesz dodatkowe argumenty jako Lista tablic.

Korzystanie z metod połączeń i zastosowania

Wracając do naszego pierwotnego problemu, możemy użyć „Nazwa wydruku”Funkcja z„osoba 1„Obiekt do wydrukowania nazwy osoba 2 obiekt za pomocą następującego wiersza kodu:

osoba 1.Nazwa wydruku.Zadzwoń (osoba 2);

Jeśli uruchomisz powyższe polecenie, zobaczysz następujące dane wyjściowe:

Podobnie możesz użyć stosować() metoda w tym samym celu przy użyciu kodu:

osoba 1.Nazwa wydruku.Zastosuj (osobowość2);

Ale co jeśli Nazwa wydruku() Funkcja przyjmuje niektóre argumenty, takie jak:

PrintName: funkcja (miasto, rodzeństwo)
konsola.log ('$ to.Nazwa od $ City ma $ rodzeństwo rodzeństwo ');
,

W tym przypadku użyjesz funkcji wywołania z następującym wierszem kodu:

osoba 1.Nazwa wydruku.Zadzwoń (osoba 2, „New York”, 4);

Kompletny fragment kodu jest jako:

var person1 =
Imię: „John Doe”,
Wiek: 25,
Oznaczenie: „Audytor”,
PrintName: funkcja (miasto, rodzeństwo)
konsola.log ('$ to.Nazwa od $ City ma $ rodzeństwo rodzeństwo ');
,
;
var person2 =
Imię: „Baba Yaga”,
Wiek: 22,
Oznaczenie: „Bezrobotne”,
;
osoba 1.Nazwa wydruku.Zadzwoń (osoba 2, „New York”, 4);

Jeśli wykonasz następujący kod, otrzymasz wyjście jako:

Jak widać, byłeś w stanie przekazać argumenty za pomocą metody wywołania, możesz to zrobić za pomocą stosować() Metoda również przy użyciu następującego fragmentu kodu:

var person1 =
Imię: „John Doe”,
Wiek: 25,
Oznaczenie: „Audytor”,
PrintName: funkcja (miasto, rodzeństwo)
konsola.log ('$ to.Nazwa od $ City ma $ rodzeństwo rodzeństwo ');
,
;
var person2 =
Imię: „Baba Yaga”,
Wiek: 22,
Oznaczenie: „Bezrobotne”,
;
osoba 1.Nazwa wydruku.Zastosuj (osoba 2, [„New York”, 4]);

Notatka: do przekazywania argumentów do pożyczonej funkcji przez stosować() Metoda, używamy tablicy zawierającej argumenty.

Jeśli wykonasz ten kod, otrzymasz to samo identyczne dane wyjściowe jak:

Ale co, jeśli nie chcesz pożyczyć funkcji z jakiegoś obiektu? To tutaj Metoda wiązania wchodzi w grę.

Metoda BIND ()

w przeciwieństwie do dzwonić I stosować metody, wiązać Metody są używane do utworzenia kopii funkcji, a następnie umieszczenia tej kopiowanej funkcji jako atrybutu obiektu, aby funkcja mogła być używana w późniejszym czasie.

Składnia metody wiązania

Składnia jest jak:

var newFunctionName = Object1.funkcjonować.bind (referenceToObject2);

Uwaga: Metoda powiązania zwraca replikowaną funkcję.

Aby to zademonstrować, zmieńmy kod z powyższego przykładu w ten sposób:

var person1 =
FirstName: „John”,
LastName: „Doe”,
Wiek: 25,
printfullName: function ()
konsola.Log (to.FirstName + "" + to.nazwisko);
,
;
var person2 =
FirstName: „Baba”,
LastName: „Yaga”,
Wiek: 25,
;

Teraz, jeśli chcesz wykonać kopię funkcji printfullName z obiektu osoba 1 i uczyń go atrybutem obiektu osoba 2 Następnie możesz to zrobić za pomocą następującego wiersza kodu:

var printMyName = osobowość1.printfullName.wiązanie (osobowość2);

Dzięki tej linii masz „Baked”Funkcja atrybutu PrintMyname z obiektem osoba 2, i możesz go wywołać za pomocą polecenia:

PrintMyName ()

Uwaga: nie nazywasz tego z osoba 2 obiekt przy użyciu opery kropkowej, ponieważ odniesienie do osoba 2 Obiekt jest już „Baked”Do funkcji.

Kompletny fragment kodu jest jako:

var person1 =
FirstName: „John”,
LastName: „Doe”,
Wiek: 25,
printfullName: function ()
konsola.Log (to.FirstName + "" + to.nazwisko);
,
;
var person2 =
FirstName: „Baba”,
LastName: „Yaga”,
Wiek: 25,
;
var printMyName = osobowość1.printfullName.wiązanie (osobowość2);
PrintMyName ();

Po wykonaniu tego fragmentu kodu otrzymasz następujące dane wyjściowe:

Proszę bardzo, zduplikowałeś funkcję od osoba 1 obiekt, przekazał odniesienie osoba 2 obiekt i przechowywał go jako osobną funkcję.

Wniosek

Zadzwoń, wiązaj I stosować Metody są skomplikowanymi metodami, które są używane do odniesienia z odniesienia obiektów i pomagają osiągnąć wyczyny, takie jak pożyczanie funkcji i replikacja funkcji z innym odniesieniem. Aby zrozumieć szczegóły tych funkcji, musimy wiedzieć, jakie słowo kluczowe Ten oznacza w JavaScript i to, jak działa odniesienie w JS. Dowiedziałeś się o tym, aby działać, wywołać, stosować i wiązać wraz z ich przykładami.