[英]Understanding callback.call function in jquery
请检查以下代码。 我无法确切知道calllback.call在做什么。
另外,我不知道this和this [i]有什么区别,以及if(callback.call(this,this [i]))如何被评估为true或false。
Array.prototype.each = function(callback) {
var i = 0;
while (i < this.length) {
callback.call(this, this[i]);
i++;
}
return this;
};
Array.prototype.map = function(callback) {
var i = this.length;
var found = []
while (i--) {
if(callback.call(this, this[i])) {
found.push(this[i]);
}
}
return found;
};
这些函数如下:
Array.each(function(value){
...
})
Array.map(function(value){
...
})
我无法确切知道calllback.call在做什么。
Function.prototype.call允许您this
调用具有显式值的函数
callback.call(this, this[i]);
是相同的
callback(this[i])
不同之处在于回调内的值this
是设定为相同的,因为它是在当前上下文中。
也无法知道this和this [i]有什么区别。
在这种情况下, this
是当前数组。 因此, this
意味着整个数组, this[i]
获得数组的第i个元素。
您拥有的.each
函数将遍历数组,并为每个数组调用一个函数。 这类似于javascript在Array.prototype.forEach中内置的。
.map
的命名就好像它是Array.protoype.map的polyfill一样,但实际上是在执行.filter操作。 奇怪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.