Appelez appliquer et lier. et comment ils sont différents.
Permet d'apprendre à appeler et d'appliquer en utilisant n'importe quelle terminologie quotidienne.
Vous avez trois automobiles your_scooter , your_car and your_jet
qui démarrent avec le même mécanisme (méthode). Nous avons créé un objet automobile
avec une méthode push_button_engineStart
.
var your_scooter, your_car, your_jet;
var automobile = {
push_button_engineStart: function (runtime){
console.log(this.name + "'s" + ' engine_started, buckle up for the ride for ' + runtime + " minutes");
}
}
Permet de comprendre quand l'appel est appliqué et d'appliquer. Supposons que vous êtes ingénieur et que vous l'avez fait your_scooter
, your_car
et your_jet
que vous ne soyez pas venu avec un push_button_engine_start et que vous souhaitiez utiliser un tiers push_button_engineStart
.
Si vous exécutez les lignes de code suivantes, elles donneront une erreur. POURQUOI?
//your_scooter.push_button_engineStart();
//your_car.push_button_engineStart();
//your_jet.push_button_engineStart();
automobile.push_button_engineStart.apply(your_scooter,[20]);
automobile.push_button_engineStart.call(your_jet,10);
automobile.push_button_engineStart.call(your_car,40);
Ainsi, l'exemple ci-dessus donne avec succès à votre_scooter, votre_voiture, votre_jet une caractéristique de l'objet automobile.
Approfondissons
Ici, nous allons diviser la ligne de code ci-dessus.
automobile.push_button_engineStart
nous aide à utiliser la méthode.
De plus, nous utilisons appliquer ou appeler en utilisant la notation par points.
automobile.push_button_engineStart.apply()
Maintenant, appliquez et appelez accepter deux paramètres.
- le contexte
- arguments
Nous définissons donc ici le contexte dans la dernière ligne de code.
automobile.push_button_engineStart.apply(your_scooter,[20])
La différence entre l'appel et l'application est simplement que l'application accepte les paramètres sous la forme d'un tableau tandis que l'appel peut simplement accepter une liste d'arguments séparés par des virgules.
qu'est-ce que la fonction JS Bind?
Une fonction de liaison est fondamentalement qui lie le contexte de quelque chose et le stocke ensuite dans une variable pour une exécution ultérieure.
Rendons notre exemple précédent encore meilleur. Plus tôt, nous avons utilisé une méthode appartenant à l'objet automobile et l'avons utilisée pour équiper your_car, your_jet and your_scooter
. Imaginons maintenant que nous voulons donner un séparé push_button_engineStart
séparément pour démarrer nos automobiles individuellement à tout stade ultérieur de l'exécution que nous souhaitons.
var scooty_engineStart = automobile.push_button_engineStart.bind(your_scooter);
var car_engineStart = automobile.push_button_engineStart.bind(your_car);
var jet_engineStart = automobile.push_button_engineStart.bind(your_jet);
setTimeout(scooty_engineStart,5000,30);
setTimeout(car_engineStart,10000,40);
setTimeout(jet_engineStart,15000,5);
toujours pas satisfait?
Disons-le clairement comme une larme. Il est temps d'expérimenter. Nous allons revenir pour appeler et appliquer l'application de la fonction et essayer de stocker la valeur de la fonction comme référence.
L'expérience ci-dessous échoue parce que call et apply sont invoqués immédiatement, par conséquent, nous n'atteignons jamais le stade de stockage d'une référence dans une variable qui est l'endroit où la fonction de liaison vole la vedette
var test_function = automobile.push_button_engineStart.apply(your_scooter);