"use strict";
var name = '小王',age=10;
var obj = {
name:'小李',
age:20,
getInfo(from, to) {
console.log(arguments)
console.log(this.name + '的年齡是' + this.age + '來自:' + from + ' 去:' + to);
}
};
var db = {name:'大村',age:96};
obj.getInfo.call(db,'北京','南京');
obj.getInfo.apply(db,['内蒙古','新疆','别墅']);
obj.getInfo.bind(db,'上海','天津')();

以上出了 bind 方法後面多了個 () 外 ,結果傳回都一緻!
由此得出結論,bind 傳回的是一個新的函數,你必須調用它才會被執行。
微妙的差距!
從上面四個結果不難看出:
call 、bind 、 apply 這三個函數的第一個參數都是 this 的指向對象,第二個參數差别就來了:
call 的參數是直接放進去的,第二第三第 n 個參數全都用逗号分隔,直接放到後面 obj.myFun.call(db,'成都', ... ,'string' )。
apply 的所有參數都必須放在一個數組裡面傳進去 obj.myFun.apply(db,['成都', ..., 'string' ])。
bind 除了傳回是函數以外,它 的參數和 call 一樣。
當然,三者的參數不限定是 string 類型,允許是各種類型,包括函數 、 object 等等!
佛語:我本求心不求佛,了知三界空無物,若欲求佛但求心,隻這心心心是佛