apply和Call区别
来源:互联网 发布:淘宝花呗立刻能还吗 编辑:程序博客网 时间:2024/05/22 09:50
1.call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。
二者的作用完全一样,只是接受参数的方式不太一样。例如,有一个函数 func1 定义如下:
var func1 = function(arg1, arg2) {};
就可以通过 func1.call(this, arg1, arg2); 或者 func1.apply(this, [arg1, arg2]); 来调用。其中 this 是你想指定的上下文,他可以任何一个 JavaScript 对象(JavaScript 中一切皆对象),call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。
JavaScript 中,某个函数的参数数量是不固定的,因此要说适用条件的话,当你的参数是明确知道数量时,用 call,而不确定的时候,用 apply,然后把参数 push 进数组传递进去。当参数数量不确定时,函数内部也可以通过 arguments 这个数组来便利所有的参数。
2.
obj.call(thisObj, arg1, arg2, …);
obj.apply(thisObj, [arg1, arg2, …]);
两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。
转载;https://www.zhihu.com/question/20289071 这篇文章讲的比较浅显易懂
- apply 和call区别
- call和apply区别
- apply和Call区别
- 区别call() 和 .apply()
- call和apply的区别
- call和apply的区别
- JS: call和apply 区别
- call 和 apply的区别
- call()和apply()的区别
- call和apply的区别
- call()和apply()的区别?
- call()和apply()的区别
- call和apply的区别
- call和apply的区别
- call()和apply()的区别
- call和apply的区别
- call和apply的区别
- call和apply的区别
- 数据库SQL语句 SELECT LIKE like用法详解
- Java 遇到问题理解
- Math类:
- 1.2.5 计算机系统的多级层次结构
- c的日志库
- apply和Call区别
- Bitmap的加载和Cache
- 第25周-window程序设计(基础篇)-第3章-注册窗口类别1
- 1110. Complete Binary Tree
- 判断一个数是否为超级素数
- Linux下的地址映射
- 算出具体某一天是星期几
- CEF3开发者系列之工程和代码结构
- 在Spring Boot中使用@Scheduled实现定时任务