问答详情
源自:9-1 OOP(模拟重载、链式调用、模块化)

请问这个调用子类方法中的Person.call(this,name)

这里面的this指的什么 有点懵了  然后是怎么个原理

提问者:qq_Young_Foreve_03924380 2016-10-12 22:27

个回答

  • stone310
    2016-10-20 00:09:17

    举一个更简洁的例子:

    function A() {
        this.name = "111"   //这里的this,称为this1
    }
    function B() {
        A.call(this)       //这里发生了:1、执行了构造函数A 2、用这个this(称为this2)替换了A()上面的this;
    }
    //    this2.name="111"   执行了A()可以看成这样
    var b = new B();   //执行到这里,1、B()里面的this2确定了,就是指向new B(),也就是B;
    alert(b.name)

    如果感觉似懂非懂,再看这个:

    function A() {
        this.name = "111"
    }
    function B() {
        this.name = "222"
    }
    var b = new B();
    (function c() {          //c是个自执行函数
        A.call(b)          //执行A函数,用b去代替A里面的this,  因此A里面的语句可以看成:b.name="111"
    })()
    alert(b.name)