之前看过一些面试题,有问到js中过于call,aplly,bind的问题,比如:1.怎么利用call,apply来求一个数组的最小值
2.如何利用call,apply来做继承
3.apply,call,bind的区别和主要应用场景
首先这三个函数存在的意义是改变函数执行时的上下文,在具体一点就是改变函数运行时的this指向。
举个例子
这里控制台输出的是curry,
var animal = {
name:'dog'
}
这串代码没有showName方法,他要用这个方法就涉及到了call,apply,bind。
person.showName.call(animal);
person.showName.apply(animal);
person.showName.bind(animal)
我们拿别人的方法,改变其上下文帮助自己输出信息,说白了就是复用。
call,apply,bind 的区别
call和apply改变了函数的this上下文后便执行该函数,而bind则是返回改变了上下文后的一个函数。
call和apply的区别,主要就是参数的不同