function fn(num1, num2) {
return this.a + num1 + num2
}
var a = 20
var object = { a: 40 }
console.log(fn(10, 10)) // 40
console.log(fn.call(object, 10, 10)) // 60
console.log(fn.apply(object, [10, 10])) // 60
var _fn = fn.bind(object, 1, 2)
console.log(_fn === fn) // false
console.log(_fn()) // 43
console.log(_fn(1, 4)) // 43 因为参数被绑定。因此重新传入参数是无效的。
call:第一个参数是为函数内部指定this指向,后续的参数则是函数执行时所需要的参数,一个一个传递。
apply:第一个参数与call相同,为函数内部this指向,而函数的参数,则以数组的形式传递,作为apply第二参数。
bind:bind有所不同,函数调用bind时,函数并不会立即执行,而是返回一个新的函数,这个新函数与原函数有共同的函数体,但它并非原函数,并且新函数的参数与this指向都已绑定,参数为bind的后续参数。