当前位置: 首页 > Web前端 > HTML

call、apply、bind的区别

时间:2023-03-28 13:29:41 HTML

jscall、apply、bind的区别首先,这三个函数可以指定this的方向,但是又各有特点。1.调用函数传递参数时,需要列出来。我们使用call函数指定this指向对象obj:varobj={name:'张三',age:18}functionf(a,b){console.log(this.age+a+b);}f(1,2)//undefinedf.call(obj,1,2)//212。对于apply,与call的区别在于参数是以数组形式传递的varobj={name:'张三',age:18}functionf(a,b){console.log(this.age+a+b);}f.apply(obj,[1,2])//213、当我们使用call和apply时,会直接调用函数,而当用bind指定this点时,函数会不会立即调用,但会返回一个新函数。即使直接调用这个函数,它的this仍然指向绑定的对象。varobj={name:'张三',age:18}functionf(a,b){console.log(this.age+a+b);}varnewF=f.bind(obj);newF(1,2);//21varnewF2=f.bind(obj,1);newF2(2);//21总结:call函数接收到的第一个参数是this绑定的对象,其余要传递的参数必须列出apply函数接收到的第一个参数也是this绑定的对象,其余参数要传递的必须以数组的形式传递。bind绑定这个点不会直接运行函数,而是返回一个新的函数。bind()接收到的第一个参数作为新函数的this点,其余参数需要在新函数调用时列出并传递给新函数。