js中call方法

如下述,最终返回的结果是"Mary Doe"

为什么?this.firstName不应该是undefined吗,为什么是"Mary"呢

正常情况,this应该指向调用当前方法的对象也就是person

但是call方法会改变this的指向,使其指向第一个参数的对象

obj1.method.call(obj2, arg1 ,arg2 ...)

也可以理解为,在obj2中执行obj1中的methods方法,后面的参数是方法中的待传入参数

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"John",
    lastName: "Doe",
}
var person2 = {
    firstName:"Mary",
    lastName: "Doe",
}
person.fullName.call(person2);  // 将返回 "Mary Doe"

 

posted @ 2021-11-28 15:41  邢韬  阅读(322)  评论(0编辑  收藏  举报