函数的内置方法call()、apply()、bind()的异同
2023-12-13 04:14:24
相同点:
? ? ? ? 1. 都可以改变this的指向
? ? ? ? 2. call 和apply方法,如果无参 等同于函数调用
不同点:
? ? ? ? ? 1.无参时: bind()() 等于同函数调用 ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?call()? ? ? apply() 等同于函数调用
? ? ? ? ? 2.有参时:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ①函数名.call(obj,10,20);// 有参 第一个参数必传,this指向obj ,后面的实参用逗号? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 隔开传递
? ? ? ? ? ? ? ? ? ? ? ? ? ? ②show.apply(obj,[10,20]); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 后面的实参用数组传递
? ? ? ? ? ? ? ? ? ? ? ? ? ? ③show.bind(obj,10,20)(); ?
案例
<script>
//1.
function show(a,b){
console.log('a='+a,'b='+b);
console.log(this);
}
show();
window.show();// 谁调用了show方法this指向谁 window是顶层对旬,可以省略
show.call();// 无参 等同于函数调用
show.apply();// 无参 等同于函数调用
// var fn= show.bind();
// console.log(fn);// 生成一个和原函数一样的新函数
show.bind()();
//有参
var obj={name:"大权"}
// show.call(obj,10,20);// 有参
// show.apply(obj,[10,20]);
show.bind(obj,10,20)();
</script>
运行结果截图:
文章来源:https://blog.csdn.net/LxyingINGing/article/details/134860575
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!