call apply 的理解
通常我们将call
apply
等理解为改变函数this指向的函数。
但是在实际的使用里,也可以将call,apply理解为可以借用一些非本身函数 的 方法
下面这段函数在我们调用的时候会输出 ’ xixi ’
var obj = {
name : 'xixi',
fn : function () {
console.log(this.name)
}
}
obj.fn()
此时如果我们想要通过输出自己的 name 并且在不增加函数入参的情况下,该如何实现?
使用call apply !!!
先熟悉下apply
的使用(call和apply其实没有太大的区别,区别只是在他们第二个参数的入参方式不同)
apply
接受两个入参( this 的指向对象, 函数的入参)
接下来我们引入 apply
下面这段代码改变了fn函数的this,将fn函数的this指向了obj2
var obj2 = {
name : 'xiaomin'
}
obj.fn.apply(obj2)
这段代码的运行逻辑 : 我们取用 obj
里的 fn
方法 通过 apply
改变fn
方法里面的 this
的指向,将 fn
里面的 this
指向到我们传入的 obj2
上。
这就相当的借用了fn函数的方法,同时实现了输出自己name的功能。