apply()和call()是用来改变函数作用域的两个方法
用法:func.call(obj,parm1,parm2,....)
func.apply(obj,[parm1,parm2,....])
两者用法相同,唯一区别是传参的形式不一样
解读:
func表示一个函数,obj表示一个对象,后面的参数是func的参数。
这两个方法表示的意思通俗来讲就是:
func函数会在obj内执行,func原来的this会指向obj。就这么简单。
还不懂得,看下通俗一点的例子:
window.color="red";
var obj={ color: "blue" };
function func(){
console.log(this.color);
}
func(); //red ,这里输出red可以理解吧
func.call(this) //red ,func在this作用域中执行,这里this等于window
func.call(this) //red ,同上,func在window中执行,func里面的this指向window
func.call(obj) //blue ,func在obj对象中执行,func里面的this指向了obj
好了,我自己看了好久别人的答案才总结出上面的这段精华内容,如果你看到了就点个赞吧。