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"