javascript - Problèmes signalés par ceci
ringa_lee
ringa_lee 2017-05-19 10:08:29
0
3
537
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_lee
ringa_lee

ringa_lee

répondre à tous(3)
左手右手慢动作

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.

黄舟

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

巴扎黑

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal