ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## call、apply、bind的区别 **call、apply、bind用来改变this指向。** bind:调用后**不会直接执行**,而是**返回一个改变了上下文的函数副本** call和apply是**直接执行** * * * ### 1.函数作为普通函数调用,this指向window ~~~ function show(){ console.log(this); } show(); //window <script> var name = "li"; var yao = { name:"yao", } function show() { console.log(this.name); } show(yao);//li </script> ~~~ 从show(yao)的结果看出,this无法指向对象yao,无法获取它的name值 ### 2.call、apply: ~~~ show.call(yao);//yao show.apply(yao);//yao ~~~ **区别:call传参传数字,apply传数组** ~~~ function show(a,b) { console.log(this.name); console.log("sum",a+b); } show.call(yao,1,2);//yao,3 show.apply(yao,[1,2]);//yao,3 ~~~ ### 3.bind: ~~~ <script> var name = "li"; var yao = { name: "yao", } var show = function (a, b) { console.log(this.name); console.log("sum", a + b); }.bind(yao); show(); </script> ~~~