搜尋

首頁  >  問答  >  主體

javascript - this指向的問題

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();

var a = new Persion('Tom')的時候self和this還是指向Persion,怎麼執行a.before().after()的時候self就指向了Window了,本身就是想用self保存this的,我並沒有人為改變self,那為什麼self的值會變,什麼原理?

補充:
是最上面那句var self= this;在調試的時候發現self由Persion變成了window,before和after裡面我註釋掉聲明是發現self未聲明時輸出的不是undefined而是window

ringa_leeringa_lee2817 天前529

全部回覆(3)我來回復

  • ringa_lee

    ringa_lee2017-05-19 10:10:29

    before函數裡並沒有定義self變量,所以這裡的self引用的是window.self。
    self 屬性可傳回對視窗本身的唯讀參考。等價於 Window 屬性。

    回覆
    0
  • 黄舟

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

    你before和after裡_self的值是屬於未定義的

    回覆
    0
  • 巴扎黑

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

    是我理解出問題了,我的問題是從我的程式碼裡抽出來簡化的,原本程式碼裡有異步的部分,this到了非同步裡面變成window。而調試的時候發現最上面那句var self= this的self由Persion變成了window,以為是self出了問題。

    回覆
    0
  • 取消回覆