AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
[TOC] ## call、apply、bind的区别 ~~~ call、apply、bind用来改变this指向。 bind调用后不会直接执行,而是返回一个改变了上下文的函数副本 call和apply是直接执行 call传的是数字 apply传是数字 ~~~ ### 1.函数作为普通函数调用,this指向window ~~~ function show(){ console.log(this); } show(); //window <script> var name = "li"; var xu = { name:"xu", } function show() { console.log(this.name); } show(xu);//li </script> ~~~ 从show(xu)的结果看出,this无法指向对象xu,无法获取它的name值 ### 2.call、apply: ~~~ show.call(xu);//xu show.apply(xu);//xu ~~~ 区别:call传参传数字,apply传数组 ~~~ function show(a,b) { console.log(this.name); console.log("sum",a+b); } show.call(xu,1,2);//xu,3 show.apply(xu,[1,2]);//xu,3 ~~~ ### 3.bind: ~~~ <script> var name = "li"; var xu = { name: "xu", } var show = function (a, b) { console.log(this.name); console.log("sum", a + b); }.bind(xu); show(); </script> ~~~