猿问

JavaScript的.call()方法理解

今天在理解.call()方法上出现了问题,自己给自己讲不明白了...


var obj = {

    name: 'linxin'

}


function func() {

    console.log(this.name);

}


func.call(obj);       // linxin

问题一 : A.call(B),可以理解为A继承了B吗?

要是可以的话,

问题二 :下边这个怎么变成了B继承A了呢?


var Person1  = function () {

    this.name = 'linxin';

}

var Person2 = function () {

    this.getname = function () {

        console.log(this.name);

    }

    Person1.call(this);

}

var person = new Person2();

person.getname();       // linxin

.call()的A和B要怎么理解 ? 怎么来形容比较好理解一些...现在看的有点脑溢血


慕姐8265434
浏览 368回答 3
3回答

白板的微信

很好理解,.call() 方法是改变函数内部的 this 指向,在 Person2 中调用 Person1 时,把 Person1 内部的 this 指向修改为 Person2 的 this 了。构造继承。

牛魔王的故事

call和apply的区别是传递参数的方式不一样,但作用都是为要执行的方法重新绑定一个this,类似用B来调用A的方法。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答