fn.call(this,this.elements[i]); //..虽然看了call的手册,这里还是难于理解
而且这段代码中为什么还要这样写call呢?
上面代码是不是相当于:
function(el){
el.style[prop] = val;
}.call(this,this.elements[i]);
谁详细的讲解一下这个的执行流程?<div id="box">mybox</div>(function(){

function _$(els){
this.elements = [];
for(var i=0, len = els.length; i<len; i++){
var element = els[i];
if(typeof element === "string"){
element = document.getElementById(element);
}
this.elements.push(element);
}
}

_$.prototype = {
each : function(fn){
for(var i=0, len = this.elements.length; i<len; i++){
fn.call(this,this.elements[i]);
console.log(this.elements[i])
}
},
setStyle : function(prop,val){
this.each(function(el){
console.log(el)
el.style[prop] = val;
})
}
}

window.$ = function(){
return new _$(arguments);
}
})();
$("box").setStyle("color","red")

解决方案 »

  1.   

    你当他是一种函数调用的方法就行了function f(){alert(1)}
    普通函数调用很方便  f()   这样就调用了但还可以用另外的方法调用函数 其中就有call,他比普通的函数调用方法更强大,还可以指定调用这个函数的对象。你可以把他看成是调用函数的一种扩展 f.call(o)  在o上调用f
      

  2.   

    看下我的博客
    http://blog.csdn.net/g125989100/article/details/6924525
    有详细讲解