call apply bind 区别?

call apply bind 区别?

例:定义一个计算器,没绑定bind的为公共计算器,call可以调用,绑定bind的为私人计算器,别人调用不了,

//ps:用bind绑定的call强制作借用不好用了,

function calc(base,bonus){

  console.log(

  this.ename+'的总工资是'+(base+bonus)

 )

}

var lilei = {ename:'Li Lei'};

var hmm = {ename:"Han Meimei"};

//lilei临时借用calc计算器

calc.call(hmm,10000,4000)  //Han Meimei的总工资是14000

calc.call(lilei,10000,1000)  //Li Lei的总工资是11000

//lilei买了一个和 calc一样的计算器,新计算器永久属于lilei

var lilei_calc=calc.bind(lilei);

lilei_calc(10000,3000);   //Li Lei的总工资是13000

lilei_calc(10000,5000);   //Li Lei的总工资是15000

lilei_calc(10000,9000);   //Li Lei的总工资是19000

//hmm借lilei的计算器,call没有bind强大,借来用不了,名还是Li Lei

lilei_calc.call(hmm,10000,2999);  //Li Lei的总工资是12999,

call和apply:临时借用一个函数,并替换this为指定对象,

-----立刻执行

bind:基于现有函数,创建一个新函数,并永久绑定this 为指定对象。

-----只创建函数,不执行(要执行在下边在调用)

何时:立刻执行函数-------call

   不立刻执行 -------bind

原文地址:https://www.cnblogs.com/liubingyjui/p/10118190.html