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

关于call、apply、bind的用法区别

时间:2023-04-02 12:38:15 HTML

call、apply、bind是用来改变this的重点的。call和appl会立即调用函数,而bind不会立即调用函数,而是返回一个函数值returnone:call()函数,第一个参数是this将指向的对象,第二个参数是可能会通过。例如,让obj1={name:"Jimmy",age:15,sayHi(){console.log("很高兴认识你,我的名字是"+this.name)},eat(food,drink){console.log(this.name+"likeeat"+food+""+drink)}}letobj2={name:"Harry",age:16}obj1.sayHi.call(obj2)//很高兴认识你,我的名字isHarryobj1.eat.call(obj2,"pizza","cola")//哈利喜欢吃披萨的thiscolasayHi()方法通过调用指向obj2eat()方法的this,通过调用指向obj2call,并传递两个参数“pizza”和“cola”二:apply函数,和call几乎一模一样,只需要以数组的形式传递两个参数“pizza”和“cola”obj1.eat.apply(obj2,["pizza","cola"])//Harrylikeeatpizzacola3:bind()函数,和call差不多,区别是bind之前会返回一个函数可以使用letfun=obj1.eat.apply(obj2,"pizza","cola")fun()总结:调用,apply会立即执行,bind不会