Astuce appel de méthodes JavaScript sur d'autres objets

Vous ne cesserez jamais d'être surpris par JavaScript. Dans cette astuce, je vais vous montrer comment utiliser les méthodes JavaScript., appel et appliquer, appeler vos fonctions d'autres objets. Je ne sais pas ce que je veux dire? Commençons!

Voir le Screencast

Utiliser Call and Apply

Voici le scénario: nous avons deux objets:

var joe = name: "Joe", greet: fonction (name) alert (this.name + "dit bonjour à" + name); ; var jill = name: "Jill";

C'est assez simple de faire saluer Jill par Joe:

joe.greet ("Jill");

Mais comment pouvons-nous amener Jill à saluer Joe? Elle n'a pas de méthode de salutation (et supposons que nous ne pouvons pas / ne devrions pas / ne devrions pas lui en donner une). Bien, tout dans JavaScript, y compris les fonctions, est un objet, tout peut avoir une méthode ou une fonction pouvant être appelée à partir de celle-ci. On donne aux fonctions deux méthodes qui vous permettent de les appeler dans des contextes différents.

Le contexte d’une méthode est essentiellement l’objet qui sera ce quand la fonction est appelée. Dans notre saluer méthode, ce se réfère à l'objet Joe, parce que c'est ce dont il fait partie.

Maintenant, essayez ceci:

joe.greet.call (jill, "Joe");

le appel La méthode sur les fonctions JavaScript vous permet de changer le contexte de la fonction. Le premier paramètre que nous passons sera le nouveau contexte: dans ce cas, c’est Jill. Les paramètres suivants sont les paramètres de la fonction que vous appelez. Dans ce cas, «Joe» sera transmis à saluer. Si vous exécutez cette opération, vous recevrez une boîte d'alerte avec le message «Jill dit bonjour à Joe».

Il y a aussi un appliquer méthode; la seule différence est qu’il prend les paramètres de la méthode sous forme de tableau, plutôt que de paramètres bruts, à la appel méthode.

joe.greet.call (jill, ["Joe"]);

Si vous avez du mal à vous rappeler si c'est appel ou appliquer qui prend le tableau, rappelez-vous que uneppl et unerray les deux commencent par ”une.”

Merci d'avoir lu!