recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Problèmes signalés par ceci

function Persion(name) {
    var self = this;
    self.name = name;
    console.log(self);
    console.log(this);
}

Persion.prototype = {
    before: function() {
        // var self = this;
        console.log('before' + self);
        console.log('before' + this);

        return this;
    },

    after: function(){
        // var self = this;
        console.log('after' + self);
        console.log('after' + this);

        return this;
    }
};


var a = new Persion('Tom');
a.before().after();

Lorsque var a = new Persion('Tom'), self et this pointent toujours vers Persion. Lors de l'exécution de a.before().after(), self pointe vers Window, je veux utiliser self pour enregistrer ceci. pas de changement artificiel de soi, alors pourquoi la valeur de soi change-t-elle ? Quel est le principe ?

Supplément : 
C'est la phrase du haut var self= this ; lors du débogage, j'ai constaté que self était passé de Persion à window. J'ai commenté les déclarations avant et après et j'ai constaté que lorsque self n'était pas déclaré, la sortie n'était pas indéfinie mais. fenêtre

ringa_leeringa_lee2817 Il y a quelques jours533

répondre à tous(3)je répondrai

  • ringa_lee

    ringa_lee2017-05-19 10:10:29

    La variable self n'est pas définie dans la fonction before, donc self fait ici référence à window.self. La propriété
    self renvoie une référence en lecture seule à la fenêtre elle-même. Équivalent à la propriété Window.

    répondre
    0
  • 黄舟

    黄舟2017-05-19 10:10:29

    La valeur de _soi dans votre avant et après est indéfinie

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:10:29

    Je comprends qu'il y a un problème. Mon problème est extrait de mon code et simplifié Il y a une partie asynchrone dans le code original, et cela devient fenêtre dans la partie asynchrone. Lors du débogage, j'ai découvert que le self dans la phrase du haut var self= cela passait de Persion à window, j'ai donc pensé qu'il y avait quelque chose qui n'allait pas avec self.

    répondre
    0
  • Annulerrépondre