首先,这三个函数都是用来重新定义this对象的。 这三个函数的第一个参数都是this的指向对象 bind返回的是一个新的函数,必须被调用才能指向。 使用call和apply的时候,函数就会被执行,返回的是这个函数执行的结果。
obj.myFun.call(db);
obj.myFun.apply(db);
obj.myFun.bind(db)();
call和apply的差别是 入参的格式不同(从第二个参数开始不同)。 call的参数可以直接放,从第二个参数到第n个参数都用逗号分隔。 apply的参数(除第一个this外),都必须放在一个数组中传进去。
obj.myFun.call(db,'成都', ... ,'string' )
obj.myFun.apply(db,['成都', ..., 'string' ])