最近在看Underscore.js的源码,看到代码中很多地方用到了call,特意研究了一下call的实现。call主要是用于改变this的指向,可以通过以下代码来实现。
Function.prototype.myCall = function (content) {
var content = content || window;
content.fn = this;
var args = [];
for(var i = 0;i<arguments.length;i++){
args.push('arguments[' + i + ']');
}
var result = eval('content.fn('+args+')');
delete content.fn;
return result;
}
网友评论