En JavaScript, vous pouvez utiliser les fonctions et call()
pour modifier le pointeur d'une fonction.apply()
bind()
this
1. Utilisation call()
des fonctions
call()
Les fonctions peuvent transmettre un objet comme premier argument à une fonction, définir cet objet comme this
valeur de la fonction, puis exécuter la fonction. Sa syntaxe est :
function.call(thisArg, arg1, arg2, ...)
thisArg
estthis
l'objet à définir comme valeur de la fonction.arg1, arg2, ...
est la liste des arguments passés à la fonction.
Par exemple, le code suivant montre comment utiliser call()
une fonction pour modifier la valeur d'une fonction this
:
const person1 = { name: 'John' };
const person2 = { name: 'Jane' };
function greeting() {
console.log(`Hello, I'm ${this.name}`);
}
greeting.call(person1); // 输出:Hello, I'm John
greeting.call(person2); // 输出:Hello, I'm Jane
2. Utilisation apply()
des fonctions
apply()
Une fonction call()
fonctionne de la même manière qu'une fonction, mais la liste des paramètres est passée à la fonction sous la forme d'un tableau, et sa syntaxe est :
function.apply(thisArg, [argsArray])
thisArg
estthis
l'objet à définir comme valeur de la fonction.argsArray
est la liste des paramètres passés à la fonction, représentés sous forme de tableau.
Par exemple, le code suivant montre comment utiliser apply()
une fonction pour modifier la valeur d'une fonction this
:
const person1 = { name: 'John' };
const person2 = { name: 'Jane' };
function greeting(age) {
console.log(`Hello, I'm ${this.name} and I'm ${age} years old`);
}
greeting.apply(person1, [30]); // 输出: Hello, I'm John and I'm 30 years old
greeting.apply(person2, [25]); // 输出: Hello, I'm Jane and I'm 25 years old
3. Utilisation bind()
des fonctions
bind()
La fonction crée une nouvelle instance de fonction et this
lie sa valeur à l'objet spécifié. Au lieu d'exécuter la fonction immédiatement comme call()
et apply()
, elle renvoie une this
nouvelle fonction liée à la valeur spécifiée. Sa syntaxe est :
function.bind(thisArg[, arg1[, arg2[, ...]]])
thisArg
estthis
l'objet à définir comme valeur de la fonction.arg1, arg2, ...
est la liste des arguments passés à la fonction.
Par exemple, le code suivant montre comment utiliser bind()
une fonction pour modifier la valeur d'une fonction this
:
const person1 = { name: 'John' };
const person2 = { name: 'Jane' };
function greeting(age) {
console.log(`Hello, I'm ${this.name} and I'm ${age} years old`);
}
const greetingPerson1 = greeting.bind(person1);
greetingPerson1(30); // 输出: Hello, I'm John and I'm 30 years old
const greetingPerson2 = greeting.bind(person2);
greetingPerson2(25); // 输出: Hello, I'm Jane and I'm 25 years old
Les trois méthodes ci-dessus peuvent modifier this
la valeur de la fonction, mais elles ont des objectifs et des détails de mise en œuvre différents.