读书人

大家帮小弟我讲解上call的实际运用机制

发布时间: 2012-09-25 09:55:59 作者: rapoo

大家帮我讲解下call的实际运用机制.
fn.call(this,this.elements[i]); //..虽然看了call的手册,这里还是难于理解
而且这段代码中为什么还要这样写call呢?
上面代码是不是相当于:
function(el){
el.style[prop] = val;
}.call(this,this.elements[i]);
谁详细的讲解一下这个的执行流程?

JScript code
<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")


[解决办法]
你当他是一种函数调用的方法就行了

function f(){alert(1)}
普通函数调用很方便 f() 这样就调用了

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

读书人网 >JavaScript

热点推荐