我对Array.prototype.forEach函数参数有些困惑,特别是“ thisp ”(第二个参数)。
下面是原始函数,我在document.write里面添加了以检查:
Array.prototype.forEach=function(res , thisp)
{
var len = this.length;
if (typeof res != "function")
throw new TypeError();
//var thisp = arguments[1];
document.write("cekkk<br/>");
for (var i = 0; i < len; i++)
{
if (i in this)
document.write(thisp+", "+this[i]+", "+i+"<br/>");
res.call(thisp, this[i], i, this);
}
};
结果是:
cekkk
undefined, 4, 0
undefined, 1, 1
undefined, 3, 2
undefined, 5, 3
undefined, 6, 4
如果我删除thisp参数,如下所示:
Array.prototype.forEach=function(res)
{
var len = this.length;
if (typeof res != "function")
throw new TypeError();
//var thisp = arguments[1];
document.write("cekkk<br/>");
for (var i = 0; i < len; i++)
{
if (i in this)
document.write(this[i]+", "+i+"<br/>");
res.call(this[i], i, this);
}
};
结果是:
cekkk
4, 0
1, 1
3, 2
5, 3
6, 4
我的数组是[4,1,3,5,6]
有人在解释函数的参数是什么用的? thisp的数据类型是什么以及为什么thisp未定义?
非常感谢。