JS bind 和 apply 燃气卡了

14 min read

JS中的bind和apply都是用于改变函数的执行上下文(this)的方法。

bind方法会返回一个新函数,该函数的执行上下文被绑定到bind方法的第一个参数上,后续的参数将会作为新函数的参数依次传入。使用bind方法可以延迟执行函数,同时还可以固定函数的执行上下文。例如:

function greet(name) {
  console.log("Hello, " + name + "!");
}

var greetPerson = greet.bind(null, "John");
greetPerson(); // 输出: Hello, John!

在上面的例子中,使用bind方法将greet函数的执行上下文绑定到null上,同时传入了"John"作为参数。之后,通过调用greetPerson方法即可执行greet函数,输出"Hello, John!"。

apply方法也用于改变函数的执行上下文,但不同于bind方法的是,它直接执行了函数。apply方法接受两个参数,第一个参数是要绑定的执行上下文,第二个参数是一个数组或类数组对象,其中的元素会依次作为函数的参数传入。例如:

function calculateSum(a, b) {
  console.log(a + b);
}

calculateSum.apply(null, [3, 4]); // 输出: 7

在上面的例子中,使用apply方法将calculateSum函数的执行上下文绑定到null上,并传入一个包含两个元素的数组[3, 4]作为参数。通过执行apply方法,即可输出7。

总结:bind和apply都是用于改变函数的执行上下文(this)的方法,bind方法返回一个新函数,apply方法直接执行函数。