-
三者都可以改变函数的
this
对象指向 -
三者第一个参数都是
this
要指向的对象,如果如果没有这个参数或参数为undefined
或null
,则默认指向全局window
-
三者都可以传参,但是
apply
是数组,而call
是参数列表,且apply
和call
是一次性传入参数,而bind
可以分为多次传入 -
bind
是返回绑定this之后的函数,apply
、call
则是立即执行
(1)函数.call(对象, 实参, 实参...)
(2)函数.apply(对象, [实参, 实参, ...])
(3)bind
// 三者都是用于改变this指向 var obj1 = { a: 1 } var obj2 = { a: 2, fn: function (c) { console.log(this.a, c) } } // obj2.fn(5) // 通过call改变this指向,会触发该函数,把剩余参数直接往后放 obj2.fn.call(obj1, 5) // 通过apply改变this指向,会出发该函数,把剩余参数放数组 obj2.fn.apply(obj1, [5]) // 通过bind改变this指向,不会触发该函数,返回的是一个新的函数,需要再去调用 obj2.fn.bind(obj1)(5)
标签:obj2,指向,bind,改变,call,apply,fn From: https://www.cnblogs.com/le-fang/p/17475587.html