
正文
原生js实现一个call,javascript原生
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何理解和熟练运用js中的call及apply
1、apply与call是更改对象的内部指针,即改变对象的this指向的内容;call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。
2、\x0d\x0a先来看看JS手册中对call的解释:\x0d\x0acall 方法\x0d\x0a 调用一个对象的一个方法,以另一个对象替换当前对象。
3、call(), apply(),bind()都属于Function.prototype的一个内置方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,主要就是围绕这this对象的改变操作。下面已代码逐一展示各自的用法。
4、在大多数情况下,两个函数可以相互替换的。你可以把apply当作call的糖衣写法。就好像js里面循环函数你可以用for也可以用while 一样。call和apply不是一定要怎么用的。
5、call 要求讲参数显式的传递给被调用函数。比如:function sum( a, b ) { return a + b;} sum.call( null, 1, 2 );sum.apply( null, [ 1, 2 ] );apply 的存在很方便使用当前函数的参数调用另外一个函数。
6、a:第一个参数都是指定函数内部中this的指向(函数执行时所在的作用域),然后根据指定的作用域,调用该函数。b:都可以在函数调用时传递参数。call,bind方法需要直接传入,而apply方法需要以数组的形式传入。
相关问答
Q1: Js中call和apply的区别和用法是什么?
apply()是你可以用来操作this的第二个函数方法。
call(), apply(),bind()都属于Function.prototype的一个内置方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,主要就是围绕这this对象的改变操作。下面已代码逐一展示各自的用法。
从定义中可以看出,call和apply都是调用一个对象的一个方法,用另一个对象替换当前对象。
Q2: js中call,apply和bind方法的区别和使用场景
1、call(), apply(),bind()都属于Function.prototype的一个内置方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,主要就是围绕这this对象的改变操作。下面已代码逐一展示各自的用法。
2、三者区别:apply:应用某一对象的一个方法,用另一个对象替换当前对象 最多只能有两个参数——新this对象和一个数组 argArray。
3、所以从作用上讲,其实apply和call是一样的,他们和bind的区别就是bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。
4、我经常搞不清楚call,apply之间的区别,今天就记录一下,以免再忘了。
Q3: JS中关于call()方法的一个问题,如图中所示,求高手详解。
1、c函数里的x,不从属任何对象,而f.call(c)其实就是c.f(),这样的话,f函数中alert(this.x)就是alert(c.x),但c并没有x属性,那个x是c函数中的局部变量,不是它的属性,所以你不能得到c.x。
2、函数aaa的参数要求是一个函数,而json.b()是函数执行的结果,而且这个结果还不是一个函数而是undefined,所以会报错。区别在于,json.b是一个函数,因为对象json的属性b是一个函数。
3、第二句alert(a),显然在函数e的作用域里,变量a是不存在的,所以js会到window的作用域去查找属性a,而window的属性a是有的,它的值是A,所以这个时候alert(a)就是alert(window.a),alert的结果就是A。
关于原生js实现一个call和javascript原生的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






