详解js中的apply与call的用法
前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了 改变函数体内部 this 的指向 。 call 和 apply 二者的作用完全一样,只是接受参数的方式不太一样。 方法定义 apply Function.apply(obj,args) 方法能接收两个参数: obj: 这个对象将代替Function类里this对象 args: 这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数。 call call方法 与 apply方法 的第一个参数是一样的,只不过第二个参数是一个参数列表 在非严格模式下当我们第一个参数传递为null或undefined时,函数体内的this会指向默认的宿主对象,在浏览器中则是window 1 2 3 4 5 var test = function (){ console.log( this ===window); } test.apply( null ); //true test.call(undefined); //true 用法 "劫持"别人的方法 此时 foo 中的 logName 方法将被bar引用 , this 指向了 bar 1 2 3 4 5 6 7 8 9 10 var foo = { name: "mingming" , logName: