本文受到了知乎问题 如何理解和熟练运用js中的call及apply? 的启发。
obj.call(thisObj, arg1, arg2, ...);
obj.apply(thisObj, [arg1, arg2, ...]);
作用:将 obj (即this) 绑定到 thisObj,使 thisObj 具备 obj 的属性和方法。绑定后会立即执行函数。
区别:call()
方法接受的是若干个参数的列表,而 apply()
方法接受的是一个包含多个参数的数组。
使用:
使用call
方法调用函数并且指定上下文的'this'
调用原生对象的方法
调用父构造函数,实现继承(类似 Java 中的写法)
bind 的使用
obj.bind(thisObj. arg1, arg2, ...);
把obj绑定到thisObj,这时候thisObj具备了obj的属性和方法。与call和apply不同的是,bind绑定后不会立即执行。