🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1. bind方法 bind改变函数内this绑定的指向 ``` var xu = { name: "xubaoshan" } var chen = function(){ console.log(this.name); }.bind(xu); chen(); ``` 2. call:改变函数内部this关键字的指向 call(thisObj, params) 3. apply:改变函数内部this关键字的指向 传参不一样,apply传递数组 call与apply和bind不同,它们在函数进行时改变执行的this ``` var chen = { name: "chen"; } var xu = { name: "xubaoshan", sayName(a, b){ console.log(this.name); console.log(a+b); } } xu.sayName.call(chen, 1, 2); //chen 3 xu.sayName.apply(chen, [1,2]); //chen 3 ``` 点击事件中的this指向改变 ``` <p id="test">hello world</p> <script> var id = '123'; var test = document.getElementById("test"); test.onclick = function(){ alert(this.id); //"test" show(); //123 show.call(this); //"test" } function show(){ alert(this.id); }; </script> ``` 函数内的this指向改变 ``` var name = 'zhang'; var obj = { name: 'li', sayName(){ console.log(this.name); } } obj.sayName(); //li obj.sayName.call(this); //zhang ```