Maison > interface Web > js tutoriel > Solution à la solution indiquée par ceci dans la fermeture js (code)

Solution à la solution indiquée par ceci dans la fermeture js (code)

不言
Libérer: 2018-08-23 15:47:01
original
2348 Les gens l'ont consulté

Le contenu de cet article concerne la solution (code) indiquée par ceci dans la fermeture js. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.

Ce qui suit est une question, pour la sous-fonction définie dans la méthode objet, où cela pointe-t-il lorsque la sous-fonction est exécutée ?
Trois questions :
(1) Quel est l’objet imprimé dans le code suivant ?
(2) Ce code peut-il atteindre la fonction d'augmenter myNumber.value de 1 ?
(3) Sans abandonner la fonction d'assistance, quelles méthodes de modification peuvent être utilisées pour obtenir la fonction correcte ?

var myNumber = {
  value: 1,
  add: function(i){
    var helper = function(i){
        console.log(this);          
        this.value += i;
    }
    helper(i);
  }
}
myNumber.add(1);
Copier après la connexion

1. ceci pointe vers l'objet window (car l'exécution de la fonction anonyme est globale, donc cet objet pointe vers la fenêtre
2 La valeur ne peut pas être augmentée de 1) ; (chaque fonction est appelée quand obtiendra automatiquement deux variables spéciales, this et arguments. Lorsque la fonction interne recherche ces deux objets, elle ne recherchera que jusqu'à son objet actif, elle ne peut donc pas accéder à l'objet this de la fonction externe); 🎜>3. Modifier le code Pour obtenir la fonction correcte
Première méthode :

var myNumber={
    value:1,
    add:function(i){
        var that=this;//定义变量that用于保存上层函数的this对象
        var helper=function(i){
             console.log(that);
        that.value+=i;
    }
    helper(i);
    }
}
myNumber.add(1);
Copier après la connexion
Méthode deux :

var myNumber={
    value:1,
    add:function(i){
        var helper=function(i){
            this.value+=i;
        }
        helper.apply(this,[i]);//使用apply改变helper的this对象指向,使其指向myNumber对象
    }
}
myNumber.add(1);
Copier après la connexion
Méthode trois :

var myNumber={
    value:1,
    add:function(i){
        var helper=function(i){
            this.value+=i;
        }.bind(this,i);//使用bind绑定,和apply相似,只是它返回的是对函数的引用,不会立即执行
        helper(i);
    }
}
myNumber.add(1);
Copier après la connexion
Recommandations associées :

Comment js détermine-t-il si le navigateur est PC ou mobile ? (Deux méthodes)

Deux façons d'appeler des fonctions auto-exécutables en js

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!

Étiquettes associées:
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