手撕JS call、apply、bind方法
在js中call、apply、bind方法都是用来改变this指针的指向的,也是前端面试手撕代码的一个考点,拼多多笔试就考了bind的源码实现,现在给大家列出这三种方法JS实现
1.call方法
call方法的第一个参数也是this的指向,后面传入的是一个参数列表,改变this指向后原函数会立即执行,且此方法只是临时改变this指向一次
function fn(...args){
console.log(this,args);
}
let obj = {
myname:"张三"
}
fn.call(obj,1,2); // this会变成传入的obj,传入的参数必须是一个数组;
fn(1,2) // this指向window
call方法JS实现:
Function.prototype.myCall = function (context) {
// 此时这里的this指向person
if (typeof this !== 'function') {
throw new Typ