javascript – Probleme, auf die hiermit hingewiesen wird
ringa_lee
ringa_lee 2017-05-19 10:08:29
0
3
506
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();

Wenn var a = new Persion('Tom'), self und this immer noch auf Persion verweisen, wenn ich a.before().after() ausführe, möchte ich self verwenden, um dies zu speichern Keine künstliche Veränderung des Selbst. Warum ändert sich der Wert des Selbst? Was ist das Prinzip?

Ergänzung:
Es ist der oberste Satz var self= this; beim Debuggen habe ich festgestellt, dass sich self von Persion zu window geändert hat. Ich habe die Deklarationen vorher und nachher auskommentiert und festgestellt, dass die Ausgabe nicht undefiniert ist, aber Fenster

ringa_lee
ringa_lee

ringa_lee

Antworte allen(3)
左手右手慢动作

before函数里并没有定义self变量,所以这里的self引用的是window.self。
self 属性可返回对窗口自身的只读引用。等价于 Window 属性。

黄舟

你before和after里_self的值是属于未定义的

巴扎黑

是我理解出问题了,我的问题是从我的代码里抽出来简化的,原本代码里有异步的部分,this到了异步里面变成window。而调试的时候发现最上面那句var self= this的self由Persion变成了window,以为是self出了问题。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage