bind、call、apply 区别
2022-08-11 本文已影响0人
码农私房菜
1.call和apply会调用函数,且会改变函数内部的this指向
2.call和apply传递的参数不一样,call传递参数aru1,aru2.形式 而apply必须是数组形式[arg]
3.bind 不会调用函数,可以改变函数内部指向
应用场景:
- call经常做继承
- 使用方法:要改变this指向的函数.call(this的新指向,参数1,参数2……)
- apply经常和数组有关系,比如借助于数学对象实现数组的max、min
- 使用方法:要改变this指向的函数.apply(this的新指向,数组),参数以数组形式传入
- bind不调用函数,但改变this指向,比如改变定时器内部的this指向
- 使用方法:要改变this指向的函数.bind(this的新指向,参数1,参数2……)
apply:调用一个对象的一个方法,用另一个对象替换当前对象。
例如:B.apply(A, arguments);即 A 对象应用 B 对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象。
例如:B.call(A, args1,args2); 即 A 对象调用 B 对象的方法。
bind: 除了返回是函数以外,它的参数和 call 一样。
例如:B.bind(A,args1,args2,...)()