Wywołanie funkcji JavaScript
Ponowne użycie metody
Za pomocą call()
metody możesz napisać metodę, której można użyć na różnych obiektach.
Wszystkie funkcje są metodami
W JavaScript wszystkie funkcje są metodami obiektowymi.
Jeśli funkcja nie jest metodą obiektu JavaScript, jest funkcją obiektu globalnego (patrz poprzedni rozdział).
Poniższy przykład tworzy obiekt z 3 właściwościami, firstName, lastName, fullName.
Przykład
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
To słowo kluczowe
W definicji funkcji this
odnosi się do „właściciela” funkcji.
W powyższym przykładzie this
jest to obiekt person , który jest „właścicielem”
funkcji fullName .
Innymi słowy this.firstName oznacza właściwość firstName tego obiektu .
Przeczytaj więcej o this
słowie kluczowym w JS this Keyword .
Metoda JavaScript call()
Metoda call()
jest predefiniowaną metodą JavaScript.
Może służyć do wywołania (wywołania) metody z obiektem właściciela jako argumentem (parametrem).
Dzięki call()
, obiekt może używać metody należącej do innego obiektu.
Ten przykład wywołuje metodę fullName osoby, używając jej na osobie1 :
Przykład
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "John Doe":
person.fullName.call(person1);
Ten przykład wywołuje metodę fullName osoby, używając jej na person2 :
Przykład
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "Mary Doe"
person.fullName.call(person2);
Metoda call() z argumentami
Metoda call()
może przyjmować argumenty:
Przykład
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");