Funkcja Call w JavaScript

metody ponownego użycia

Użycie call() metody, które możesz napisać, aby były używane na różnych obiektach.

Funkcje są metodami obiektów

W JavaScript funkcje są metodami obiektów.

Jeśli funkcja nie jest metodą obiektu JavaScript, to jest funkcją globalnego obiektu (zobacz poprzedni rozdział).

Poniższy przykład tworzy obiekt z trzema atrybutami (firstName,lastName,fullName)。

Przykład

var person = {
    firstName:"Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
person.fullName();		// Zwróci "Bill Gates"

Spróbuj sam

Atrybut fullName jestmetoda.Obiekt person jest metodąwłaściciela.

Atrybut fullName należy do Metody obiektu person.

Metoda call() w JavaScript

call() Metoda jest predefiniowaną metodą JavaScript.

Można jej użyć do wywołania metody jako argumentu obiektu właściciela.

Poprzez call()możesz używać metod należących do innego obiektu.

W tym przykładzie wywoływana jest metoda fullName obiektu person i używana dla person1:

Przykład

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person1);  // Zwróci "Bill Gates"

Spróbuj sam

W tym przykładzie wywoływana jest metoda fullName obiektu person i używana dla person2:

Przykład

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person2);  // Zwróci "Steve Jobs"

Spróbuj sam

Metoda call() z parametrami

Metoda call() może przyjąć parametry:

Przykład

var person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + "," + city + "," + country;
  }
}
var person1 = {
  firstName:"Bill",
  lastName: "Gates"
}
person.fullName.call(person1, "Seattle", "USA");

Spróbuj sam