我们单独说call() , 因为apply() 和call() 差不多,只不过apply第二个参数必须是传入的一个数组,而call 第二个参数可以是任意类型。
obj1(method).call(obj2, argument1, argument2)
如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1... 这些作为参数传入
function add(x,y){ return x + y } function minus(x,y){ return x - y } console.log(add.call(minus, 1,2)); // 3
这个例子中的意思就是用add来替换minus , add.call(minus, 1,2) == add(1,2)
A.call(B, x,y): 就是把A函数放到B中运行, x和y是A方法的函数
用call 来实现继承, 用this可以继承myfunc1 中的所有方法和属性
function func1(name) { this.name = name; this.sing = function (song) { console.log(‘i sing‘, song) } } function func2() { func1.call(this,‘xiaozhu‘); // func2 通过this继承func1 的属性和方法 } const func3 = new func2(); console.log(func3) func3.sing(‘夜空中最亮的星‘); // i sing 夜空中最亮的星 console.log(func3.name); // xiaozhu
原文:https://www.cnblogs.com/yongzhu/p/14701122.html