
正文
怎么实现js中的call方法 jscall
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
js的call的用法,求高手解答。
改变函数A的this指向,使之指向B;把A函数放到B中运行,x和y是A函数的参数。
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法 从定义中可以看出,call和apply都是调用一个对象的一个方法,用另一个对象替换当前对象。
apply与call是更改对象的内部指针,即改变对象的this指向的内容;call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。
当call函数的第一个参数是undefined或者null时,f.call(undefined)就相当于f(),也相当于window.f()。那么根据开头的分析,这时f函数的调用者就是window了,也就是说window.a = A了。
call和apply obj.call(thisObj, arg1, arg2, ...);obj.apply(thisObj, [arg1, arg2, ...]);两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。
apply()是你可以用来操作this的第二个函数方法。
相关问答
Q1: Js中call和apply的区别和用法是什么?
1、对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
2、apply()是你可以用来操作this的第二个函数方法。
3、call和apply的说明call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。
4、call 和 apply 的区别在于处理参数上。apply 要求将参数作为数组传递给被调用函数。call 要求讲参数显式的传递给被调用函数。
5、call和apply的作用一样,只是方法传递的参数不同。
Q2: 在JS中,call()方法和apply()方法到底该怎么应用?
apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。call:调用一个对象的一个方法,用另一个对象替换当前对象。
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
对象a类似array,但不具备array的slice等方法。使用call绑定,这时候就可以调用slice方法。实现继承 通过call和apply,我们可以实现对象继承。
首先apply()方法接受两个参数一个是在其中运行函数的作用域,另一个是参数数组,其中第二个可以是Array的实例也可以是arguments对象 对于call()方法而言,第一个参数是this值没有变化,变化的是其余参数直接传递给函数。
在大多数情况下,两个函数可以相互替换的。你可以把apply当作call的糖衣写法。就好像js里面循环函数你可以用for也可以用while 一样。call和apply不是一定要怎么用的。
Q3: 如何理解和熟练运用js中的call及apply
1、首先apply()方法接受两个参数一个是在其中运行函数的作用域,另一个是参数数组,其中第二个可以是Array的实例也可以是arguments对象 对于call()方法而言,第一个参数是this值没有变化,变化的是其余参数直接传递给函数。
2、所以,可以看出call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。
3、apply与call是更改对象的内部指针,即改变对象的this指向的内容;call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。
4、其实就是更改对象的内部指针,即改变对象的this指向的内容。这在面向对象的js编程过程中有时是很有用的。对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
5、书上都有例子,多看看,照着打几次,就感觉出来了, call和apply的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值,也就是把想要运行的代码的作用域拿过来。
Q4: JS中关于call()方法的一个问题,如图中所示,求高手详解。
1、第二句alert(a),显然在函数e的作用域里,变量a是不存在的,所以js会到window的作用域去查找属性a,而window的属性a是有的,它的值是A,所以这个时候alert(a)就是alert(window.a),alert的结果就是A。
2、不能改,因为此处的this是window对象不是e。这里e函数的作用作用其实是定义两个全局变量a,和b。换成e的话就是定义e的属性了。
3、add.call(sub,3,1);这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。
4、apply与call是更改对象的内部指针,即改变对象的this指向的内容;call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。
5、call和apply的详解call()方法 用于操作this的函数方法是call(),它可以指定的this值和参数来执行函数。call()的第一个参数指定了函数执行时this的值,其后的所有参数都是需要被传入函数的参数。
6、使用call和apply方法,主要是为了修改函数运行时的this指针。
关于怎么实现js中的call方法和jscall的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







