js 中的call() 方法

this总数指向调用某个方法的对象,都 是使用call() 和apply() 方法时,就会改变this的指向

call.(thisObject, arg1, arg2...)

我们单独说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

 

js 中的call() 方法

上一篇:CSS0024: DIV 隐藏加 透明渐变特效


下一篇:C语言里strlen和sizeof的区别