call、apply、bind

31 阅读1分钟

首先,这三个函数都是用来重新定义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' ])