这里面涉及到的不止是call的知识。
call()以及apply()存在的意义是什么呢? 目的是改变函数(方法)执行的作用域。
这里要声明一点:函数在JavaScript中永远是一等公民。
var obj1 = {
name: 'aaa',
info: function(){
alert('name:'+this.name);
}
};
var obj2 = {
name: 'bbb'
};
obj1.info() //name:aaa
info() //错误
obj2.obj1.info() //错误
obj2.info() //错误
obj1.info.call(obj2) //name:bbb
在obj1中定义了一个info方法,只能通过obj1.info()来调用。
但这里的info方法依然是独立的。可以通过obj1.info().call()方式,来更改其调用者。