JavaScript 面向对象之二 —— 函数上下文(call() 和 apply())
2017-05-17 22:34
447 查看
本系列文章根据《爱前端邵山欢老师深入浅出的js面向对象》视频整理归纳
如下,定义一个函数 fun,当 fun 函数里面的 this 必须指向 obj 时,我们就可以通过函数调用 call 、apply 来指定上下文。
调用 call 和 apply 都会输出 25。
语法:
函数.call(上下文);
函数.apply(上下文);
这两个方法的区别在于传参的形式不同,call 方法传参需要将各参数用逗号隔开,而 apply 方法的参数必须是以数组的形式进行传递。如下所示:
最终都会输出 25 6
最常见的运用莫过于求数组的最大值。
我们都知道 Math.max() 方法,它只接受单独罗列的参数,要想用这个方法来求数组最大值,我们可以根据 apply 的传参必须是数组的这个特性,运用到 Math.max() 方法中来求数组的最大值,如下:
call() 和 apply()
这两个都是函数的方法,只有函数能够通过点方法调用call()、apply(),表示用指定的上下文执行这个函数。如下,定义一个函数 fun,当 fun 函数里面的 this 必须指向 obj 时,我们就可以通过函数调用 call 、apply 来指定上下文。
function fun(){ console.log(this.age); } var obj = { 'name' = '张鑫', 'age' = 25 } fun.call(obj); fun.apply(obj);
调用 call 和 apply 都会输出 25。
语法:
函数.call(上下文);
函数.apply(上下文);
这两个方法的区别在于传参的形式不同,call 方法传参需要将各参数用逗号隔开,而 apply 方法的参数必须是以数组的形式进行传递。如下所示:
function fun(a,b,c){ console.log(this.age); console.log(a + b +c); } var obj = { 'name' = '张鑫', 'age' = 25 } fun.call(obj,1,2,3); fun.apply(obj,[1,2,3]);
最终都会输出 25 6
最常见的运用莫过于求数组的最大值。
我们都知道 Math.max() 方法,它只接受单独罗列的参数,要想用这个方法来求数组最大值,我们可以根据 apply 的传参必须是数组的这个特性,运用到 Math.max() 方法中来求数组的最大值,如下:
Math.max.apply(window,[1,23,456,98]);
相关文章推荐
- JavaScript 面向对象之二 —— 函数上下文(this的指向)
- javascript:apply函数在面向对象中的用法
- JavaScript学习--Item8 函数,方法,构造函数调用 标签: javascript构造函数面向对象函数call
- JavaScript中函数对象的call()和apply()方法的总结
- JavaScript中的函数上下文和apply,call
- 【javascript】javascript中call及apply函数作用:主要实现将函数绑定到另外一个对象上去运行
- JavaScript的apply、call以及arguments对象
- javascript 函数的方法call()和apply()
- javascript 对象基础 继承机制实例 call() apply 方法!
- JavaScript面向对象实例——创建日志调试对象来代替alert函数进行调试
- JavaScript中的函数:函数的apply、call方法和length属性
- Javascript对象冒充——call与apply(转)
- JavaScript面向对象程序设计(4): 函数
- JavaScript中的函数:函数的apply、call方法和length属性
- javascript-函数声明和函数表达式-call-apply
- javascript的函数-重点介绍callee,call和apply
- javascript 函数中的apply()和call()方法。
- javascript 的函数调用过程中的arguments,callee,caller,apply,call
- JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
- javascript四种调用方式——方法调用模式、函数调用模式、构造器调用模式和Apply或Call调用模式