Array.prototype.call(elements,function(e){//Do something});
最基本的call的使用
func.call(obj,argus) == obj.func(argus); 这个我理解
AClass.call(obj) ; 这个我也能理解
在此基础上,求对一开始那个例子的深入说明 或者文章 都可以
call是function才有的,call就是调用一个函数,和()括号运算符不一样的是,call可以改变function的上下文,就是内部的this的指向,起到用某个对象代理this运行的目的,同样的有apply。
Array.prototype.slice.call(nodelist) 就相当于给nodelist下挂一个slice方法,其函数体就是Array的slice,然后用nodelist调用这个slice方法,调用完毕马上把这个方法从nodelist中删除。
nodelist.slice = Array.prototype.slice;
nodelist.slice();
delete nodelist.slice;
function testCall(arg){
console.log(this.a);
console.log(arg);
}
testCall.call({a:2});
testCall.call({a:4},6);
var obj = {a:4,b:5};
testCall.call(obj,10);