
正文
js的apply和call,js中call和apply
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何理解和熟练运用js中的call及apply
从定义中可以看出,call和apply都是调用一个对象的一个方法,用另一个对象替换当前对象。而不同之处在于传递的参数,apply最多只能有两个参数——新this对象和一个数组argArray,如果arg不是数组则会报错TypeError;call则可以传递多个参数,第一个参数和apply一样,是用来替换的对象,后边是参数列表。
obj.apply(thisObj, [arg1, arg2, ...]);两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。绑定后会立即执行函数。唯一区别是apply接受的是数组参数,call接受的是连续参数。
首先apply()方法接受两个参数一个是在其中运行函数的作用域,另一个是参数数组,其中第二个可以是Array的实例也可以是arguments对象 对于call()方法而言,第一个参数是this值没有变化,变化的是其余参数直接传递给函数。
相关问答
Q1: 在JS中,call()方法和apply()方法到底该怎么应用?
1、apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。call:调用一个对象的一个方法,用另一个对象替换当前对象。
2、apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
3、a:第一个参数都是指定函数内部中this的指向(函数执行时所在的作用域),然后根据指定的作用域,调用该函数。b:都可以在函数调用时传递参数。call,bind方法需要直接传入,而apply方法需要以数组的形式传入。c:call,apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。
4、对象a类似array,但不具备array的slice等方法。使用call绑定,这时候就可以调用slice方法。实现继承 通过call和apply,我们可以实现对象继承。
Q2: Js中call和apply的区别和用法是什么?
先说区别call和apply的参数不同,前者是call(a,b,c,...)吧所有的参数都传递。后者apply只传递两个参数apply(a,b),其中b是一个数组。这是两者最大的不同,在于后者传递的是一个数组。在大多数情况下,两个函数可以相互替换的。你可以把apply当作call的糖衣写法。
对于apply和call两者在作用上是相同的,但两者在参数上有区别的。对于第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
call,apply和bind的区别 它们在功能上是没有区别的,都是改变this的指向,它们的区别主要是在于方法的实现形式和参数传递上的不同。call和apply方法都是在调用之后立即执行的。
apply与call是更改对象的内部指针,即改变对象的this指向的内容;call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。
他们的区别仅在于接受参数的不同 首先apply()方法接受两个参数一个是在其中运行函数的作用域,另一个是参数数组,其中第二个可以是Array的实例也可以是arguments对象 对于call()方法而言,第一个参数是this值没有变化,变化的是其余参数直接传递给函数。
Q3: 和call()方法的区别
方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
用法区别:Call on用于表示拜访他人或去某地参观,强调人与人之间的交流。Call for用于表示对某种行动或措施的需要,强调需求或要求。Call in用于表示召集某人参与活动或请某人来解决问题,强调请求或邀请。Call up用于指通过电话与某人进行交流,强调通过电话进行沟通。
所以从作用上讲,其实apply和call是一样的,他们和bind的区别就是bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。
Q4: javascript中apply,call和bind的区别
1、bind是返回对应函数,便于稍后调用;apply、call则是立即调用。
2、所以从作用上讲,其实apply和call是一样的,他们和bind的区别就是bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。
3、对于call可以这样:xw.say.call(xh);对于apply可以这样:xw.say.apply(xh);而对于bind来说需要这样:xw.say.bind(xh)();如果直接写xw.say.bind(xh)是不会有任何结果的,看到区别了吗?call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,因此后面还需要()来进行调用才可以。
4、JavaScript开发者有必要理解apply、call与bind方法的不同点。它们的共同点是第一个参数都是this,即函数运行时依赖的上下文。
5、表达意思不同 call:给……取名;称呼,把……唤作;把……看作,把……算作;感召,敦促;批评,辱骂;(动物)啼叫,鸣叫;打电话,通话;喊叫,呼叫;(股票)买入期权,购买选择权(call option 的简称);执行子程序的命令。
6、js中可以改变方法作用域和参数的方式有三种,apply,call,bind.apply 和call类似第一个参数是方法的作用域,其它参数是方法的参数。
js的apply和call的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于js中call和apply、js的apply和call的信息别忘了在本站进行查找喔。






