搜索

首页  >  问答  >  正文

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 天前532

全部回复(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
  • 取消回复