JS中的call和apply
在看JS的一些框架的时候会经常遇到这两个函数,我个人认为这两个函数的出现就是因为JS中的奇怪的this,在JS中,this始终指向的是其执行上下文,而不像C#,Java之中的this那么专一,关于更多的内容可以见前面的博文。
call的作用和apply的作用是一样的,只是使用的时候所需要的参数类型不一样,前者是一个参数序列,后者是一个数组,仅此而已。
call和apply是函数上定义的一个方法,做用用于在执行的时候,改变上下文,也就是this对象,下面的测试代码可以自己去执行下,在chrome中可以跟踪这this的变化。
function add(x, y) { return x + y; } alert(add(4, 5)); var t = {}; alert(add.call(t, 4, 5)); var c = add.apply(t,[4,5]); alert(c);
var a = { "x": 1, "y": 2 }; function add(x, y) { return x + y; } function add1(x, y) { return this.x + this.y; } alert(add(4, 5)); var t = {}; alert(add.call(t, 4, 5)); var c = add1.apply(a,[4,5]); alert(c);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。