js call apply bind函数,前端call和apply,js中apply与call简单用法详解

js call apply bind函数,前端call和apply,js中apply与call简单用法详解

本文主要详细介绍了js中apply和call的简单用法,具有一定的参考价值。感兴趣的朋友可以参考一下。

可以直接看例子,也可以先看简介:

和call apply似乎动态地改变了这一点。当一个对象没有某个方法,而其他对象有,我们可以使用call或apply来操作其他对象的方法。

Call和apply属于Function.prototype的一个方法,由JavaScript引擎内部实现。因为属于Function.prototype,所以每个Function对象实例,也就是每个方法,都有call和apply的属性。既然它们是方法的属性,它们的使用当然是针对方法的。这两种方法很容易混淆,因为它们的功能相同,但使用方式不同。

从上面可以得出结论,方法使用call,apply,是为了改变调用该方法的this指针。

简单的例子:

call

函数A() {

this.getName=function (xx) {

返回xx;

}

}

函数B() {

}

var A=new A();

console.log( a.getName(我是A ));//我是一个

var B=new B();

console.log( a.getName.call(b,我是B ));//我是B

B函数中没有方法。A函数有一个getName()方法。a.getName()自然成立,但是如果B也使用getName()方法呢?然后用call(this, parameter )!

这句话你可以再理解一下——我们可以用call或者apply来调用其他对象方法来操作。调用和应用用于动态改变这一点。原来a.getName()的this指向A,call动态地将this指向B,就变成了b.getName()。

应用

Apply和call只是在参数的使用上有所不同。

函数A() {

this.sun=function (a,b) {

返回a b;

}

}

函数B() {

}

var A=new A();

console.log( a.sun(1,2));//3

var B=new B();

console.log( a.sun.call(b,2,2));//4

console.log( a.sun.apply(b,[3,3]));//6

call和apply一般使用情况

document.getElementsByTagName选择的dom节点是一个类似array的数组。它不能在数组下应用push、pop等方法。我们可以通过以下方式做到这一点:

var DOM nodes=array . prototype . slice . call(document . getelementsbytagname( * );

这样,domNodes可以应用Array下的所有方法。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

js call apply bind函数,前端call和apply,js中apply与call简单用法详解