在我的理解,this是指向的调用方法的当前对象,应该是一个对象。但看一下下面的代码
Function.prototype.apply = function(object,parameters) {
    var f = this;      //这里 f 是个函数对象还是方法变量? 到底指向什么呢?
    var o = object || window;
    var args = parameters ||[];    o._$_apply_$_ = f; //对 f 的引用
    var stringArgs = [];
    for(var i=0;i<args.length;i++) {
        stringArgs[i] = "args["+i+"]";
    }
    var arglist = stringArgs.join(",");    var methodcall = "o._$_apply_$_("+arglist+");"; //如果 f 是个对象的话,这里怎么能够执行呢?
    var result = eval(methodcall);
    delete o._$_apply_$_;
    return result;
}
这里的 this 和 f 怎么理解呢? 它们指向什么呢?

解决方案 »

  1.   

    alert(f); alert(this);
    自己看看·
      

  2.   

    Function.prototype.apply = function(object,parameters) { 
        var f = this;      //这里 f 是个函数对象还是方法变量? 到底指向什么呢? 
        var o = object || window; 
        var args = parameters ||[];     o._$_apply_$_ = f; //对 f 的引用 
        var stringArgs = []; 
        for(var i=0;i <args.length;i++) { 
            stringArgs[i] =args[i]; 
        } 
        var arglist = stringArgs.join(",");  result=o._$_apply_$_(arglist);; //如果 f 是个对象的话,这里怎么能够执行呢? 
      ;  
        return result; 

    function aa(me){alert(me)};
    (function bb(){aa.apply(null,arguments);})("az","ay");
      

  3.   


    Function.prototype.apply = function(object,parameters) {
        var f = this;      // 指向的就是当前调用的对象  //eg function test(){} test.apply(...) 这里f就是指test这个函数,在js中,函数也是对象
        var o = object || window;
        var args = parameters ||[];    o._$_apply_$_ = f; //对 f 的引用
        var stringArgs = [];
        for(var i=0;i <args.length;i++) {
            stringArgs[i] = "args["+i+"]";
        }
        var arglist = stringArgs.join(",");    var methodcall = "o._$_apply_$_("+arglist+");"; //f指向当前调用的对象(函数),....eval用法:eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它
        var result = eval(methodcall);
        delete o._$_apply_$_;
        return result;