if (!Function.prototype.apply) {
  // Based on code from http://www.youngpup.net/
  Function.prototype.apply = function(object, parameters) {
    var parameterStrings = new Array();
    if (!object)     object = window;
    if (!parameters) parameters = new Array();
    
    for (var i = 0; i < parameters.length; i++)  //这个省略了{} 但是不懂为什么要这样写呢? 望指教
      parameterStrings[i] = 'x[' + i + ']';
    
    object.__apply__ = this;
    var result = eval('obj.__apply__(' +         //这里eval()函数中的obj对象是从哪来的呢? 难道不应该是object吗?
      parameterStrings[i].join(', ') + ')');
    object.__apply__ = null;
    
    return result;
  }
}

解决方案 »

  1.   

    感觉javascript的语法概念很少很容易学  可是应用起来却是很抽象  不知道有什么好的方法可以比较快的提升 
    自己顶 等前辈解答
      

  2.   

    for (var i = 0; i < parameters.length; i++) //这个省略了{} 但是不懂为什么要这样写呢? 望指教
      parameterStrings[i] = 'x[' + i + ']';
    如果没写大括号的话,就是默认它下面的第一句话~·
    var result = eval('obj.__apply__(' + //这里eval()函数中的obj对象是从哪来的呢? 难道不应该是object吗?
    这块是不是应该写成object~``
      

  3.   


    (⊙v⊙)嗯?    还没看懂   parameterStrings[i] = 'x[' + i + ']'   假如i=1   parameterStrings[1]=x[1];   
    这样写有什么意义啊    能获取到parameters 里面的值吗?  那个确实是obj啊  但是不明白obj哪来的 又不是内置的
      

  4.   

    如果之前没声明的话~·
    可能就是放这一个临时的~·变量
    执行完eval就把这个赋值给result变量了。然后处理机制就给这个obj回收了~·
      

  5.   


    我懂了  
    可是上面那一点是什么意思呢   parameterString[i]='x['+i+']';
    是为了获取参数列表   i为下标   x[i]  怎么就能够获得 parameters下标为i 的元素的值?
    @.@???
      

  6.   

    parameterStrings 这个不是数组吗var parameterStrings = new Array();上面已经声明了'x['+i+']'然后把这个赋值给对应parameterStrings[i]