Maison > interface Web > Questions et réponses frontales > Comprendre la méthode apply en javascript

Comprendre la méthode apply en javascript

PHPz
Libérer: 2023-04-25 09:47:38
original
923 Les gens l'ont consulté

En JavaScript, la méthode apply() est une méthode très utile. Il peut être utilisé pour appeler une fonction et définir cette valeur et ses paramètres. Cet article écrira manuellement une méthode apply() pour mieux comprendre son fonctionnement.

Tout d'abord, comprenons la syntaxe de la méthode apply(). Il prend deux paramètres : le premier paramètre est la fonction à appeler et le deuxième paramètre est un tableau ou un objet de type tableau contenant les paramètres à transmettre à la fonction. Comme indiqué ci-dessous :

function myFunc(arg1, arg2) {
  console.log(this.name + arg1 + arg2);
}

const obj = {name: 'John'};
const args = [1, 2];

myFunc.apply(obj, args);
// 输出:John12
Copier après la connexion

Dans l'exemple ci-dessus, nous avons utilisé la méthode apply() pour appeler la fonction myFunc(). Nous définissons cette valeur sur obj et stockons la liste d'arguments dans le tableau args. La sortie de la fonction myFunc() est le résultat de l’ajout de l’attribut name de obj aux deux paramètres.

Maintenant, écrivons manuellement une méthode apply(). Nous pouvons le faire en créant une fonction appelée myApply(), qui simule la fonctionnalité spécifique de la méthode apply(). Pour simuler la méthode apply(), nous devrons d'abord vérifier si la fonction donnée existe et nous assurer que le deuxième paramètre est un tableau ou un objet de type tableau et que la longueur de l'objet n'est pas nulle. Ci-dessous le code de la fonction myApply() :

Function.prototype.myApply = function(context, args) {
  if (typeof this !== 'function') {
    throw new TypeError('The current object is not a function.');
  }

  if (!Array.isArray(args) && !((args.length !== null) && (args !== ''))) {
    throw new TypeError('The second argument is not an array or array-like object.');
  }

  const fn = Symbol('fn');
  context = context || window;
  context[fn] = this;

  const result = context[fn](...args);
  delete context[fn];

  return result;
}
Copier après la connexion

Dans le code ci-dessus, nous vérifions d'abord si la fonction à appeler existe et renvoyons une erreur de type si elle n'existe pas. Ensuite, nous vérifions si le deuxième paramètre est un tableau ou un objet de type tableau, et sinon, une erreur de type sera générée. Si les deux arguments sont valides, nous créons un symbole unique en tant que propriété temporaire de l'objet contextuel, lions la fonction à l'objet contextuel, l'appelons en passant l'argument args et stockons le résultat dans la variable de résultat. Enfin, nous supprimons cette propriété temporaire de l'objet contextuel et renvoyons le résultat.

Ensuite, nous pouvons utiliser la fonction myApply() pour appeler la fonction comme indiqué dans le code suivant :

function myFunc(arg1, arg2) {
  console.log(this.name + arg1 + arg2);
}

const obj = {name: 'John'};
const args = [1, 2];

myFunc.myApply(obj, args);
// 输出:John12
Copier après la connexion

Dans cet exemple, nous utilisons la méthode myApply() pour appeler la fonction myFunc(). Nous définissons cette valeur sur obj et stockons la liste d'arguments dans le tableau args. La sortie de la fonction myFunc() est le résultat de l’ajout de l’attribut name de obj aux deux paramètres.

Dans cet article, nous avons écrit manuellement une méthode apply() et l'avons utilisée pour appeler une fonction. Nous avons vu comment vérifier si une fonction existe et comment éviter de transmettre des arguments illégaux. Avec cet exemple, vous devriez pouvoir mieux comprendre le fonctionnement de la méthode apply() et les étapes nécessaires pour l'écrire à la main.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal