Prendre des exemples, expliquer les méthodes d'appel, appliquer et lier à JavaScript pour votre référence. Le contenu spécifique est le suivant
<! Doctype html> <html> <éadf> <meta charset = "utf-8"> <taptin> </ title> <script type = "text / javaScript"> function man (name, sex, âge) {this.name = name; this.sex = sexe; this.age = âge; this.say = fonction (école, zhuanye) {console.log (this.name + "," + this.sex + ", cette année" + this.age + "année! Apprenez à" + école + "+ zhuanye);}} function woman (nom, sexe, âge) {this.name = name; this.sex = sex; this.age = Âge; San "," mâle ", 26); var femme = nouvelle femme (" xiaohong "," femelle ", 18); man.say ('Tsinghua University', 'excavator'); man.say.call (femme," lanxiang école technique "," welding électrique "); man.say.apply (femme, [new oriental", "mars"]); Man.say.bind (femme) ("Deyun Club", "Musique pop");Pourquoi? Qu'est-ce que l'appel, s'applique, lier? Pourquoi apprendre cela?
Il est généralement utilisé pour spécifier cet environnement, et ces problèmes se produisent généralement avant l'apprentissage.
var a = {user: "Dream Chasing", fn: function () {console.log (this.user); }} var b = a.fn; b (); //indéfiniQuel est le problème avec l'utilisateur dans l'objet A mais non défini? C'est OK si nous exécutons directement A.Fn ().
var a = {utilisateur: "Chasing Dreams", fn: function () {console.log (this.user); }} a.fn (); // chasser les rêvesLa raison pour laquelle cela peut être imprimé ici est parce que cela indique ici la fonction A, alors pourquoi ce qui précède ne pointe pas vers A? Si nous avons besoin de comprendre ce problème de pointage, veuillez consulter la compréhension approfondie de ce pointage dans JS, et il n'est pas nécessaire de mémoriser cet article.
Bien que cette méthode puisse atteindre notre objectif, nous devons parfois enregistrer cet objet dans une autre variable, nous pouvons donc utiliser la méthode suivante.
1. Appel ()
var a = {utilisateur: "Catching Dreams", fn: function () {console.log (this.user); // Catching Dreams}} var b = a.fn; B.Call (a);En ajoutant le premier paramètre auquel l'environnement à ajouter B, mettez simplement ce point à cet objet.
En plus du premier paramètre, la méthode d'appel peut également ajouter plusieurs paramètres, comme suit:
var a = {utilisateur: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (E + EE); // 3}} var b = a.fn; B.Call (a, 1,2);2. Appliquer ()
La méthode d'application est quelque peu similaire à la méthode d'appel, elle peut également changer le pointage de ce
var a = {utilisateur: "Catching Dreams", fn: function () {console.log (this.user); // Catching Dreams}} var b = a.fn; B.Apply (a);De même, Appliquer peut également avoir plusieurs paramètres, mais la différence est que le deuxième paramètre doit être un tableau, comme suit:
var a = {utilisateur: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (E + EE); // 11}} var b = a.fn; b.apply (a, [10,1]);ou
var a = {utilisateur: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (E + EE); // 520}} var b = a.fn; var arr = [500,20]; b.apply (a, arr); // notez que si le premier paramètre de l'appel et de l'application est écrit comme nul, alors cela pointe vers un objet de fenêtre var a = {user: "Dream Chasing", fn: function () {console.log (this); // Window {external: objet, chrome: objet, document: document, a: objet, speechSynthesis: speechSynthesis…}}} var b = a.fn; b.apply (null);3. bind ()
La méthode de liaison est quelque peu différente des méthodes d'appel et d'application, mais elles peuvent être utilisées pour changer la direction de cela.
Parlons d'abord de leurs différences.
var a = {user: "Dream Chasing", fn: function () {console.log (this.user); }} var b = a.fn; b.bind (a);Nous avons constaté que le code n'était pas imprimé. Oui, c'est la différence entre les méthodes de liaison et d'appel et d'application. En fait, la méthode BIND renvoie une fonction modifiée.
var a = {user: "Dream Chasing", fn: function () {console.log (this.user); }} var b = a.fn; var c = b.bind (a); console.log (c); // function () {[code natif]}Alors exécutons la fonction C pour voir si nous pouvons imprimer l'utilisateur dans l'objet A
var a = {utilisateur: "Catching Dreams", fn: function () {console.log (this.user); // Catching Dreams}} var b = a.fn; var c = b.bind (a); c ();OK, Bind peut également avoir plusieurs paramètres, et des paramètres peuvent être ajoutés à nouveau lors de l'exécution, mais il convient de noter que les paramètres sont effectués dans l'ordre des paramètres formels.
var a = {utilisateur: "Catching Dreams", fn: function (e, d, f) {console.log (this.user); // Catching Dreams Console.log (E, D, F); // 10 1 2}} var b = a.fn; var c = b.bind (a, 10); c (1,2);Résumé: Appelez et appliquez les deux modifiez-le dans le contexte et exécutez cette fonction immédiatement. La méthode Bind permet d'appeler la fonction correspondante à chaque fois qu'elle le souhaite et d'ajouter des paramètres lorsqu'il est exécuté. C'est leur différence et choisissez de l'utiliser en fonction de votre situation réelle.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.