bindMethod
是用来替换对象的
bindArguments
用来替换参数的。

解决方案 »

  1.   

    好给你一个例子。call方法的官方解释为:
    调用一个对象的一个方法,以另一个对象替换当前对象。
    call([thisObj[,arg1[, arg2[,   [,.argN]]]]])参数
    thisObj
    可选项。将被用作当前对象的对象。arg1, arg2, , argN
    可选项。将被传递方法参数序列。说明
    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。================================================================================================================================apply方法的官方解释为:
    应用某一对象的一个方法,用另一个对象替换当前对象。
    apply([thisObj[,argArray]])参数
    thisObj
    可选项。将被用作当前对象的对象。argArray
    可选项。将被传递给该函数的参数数组。说明
    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
    从上面官方的介绍可以看出,两者实现的功能是完全一样的,只是参数传递方式不一样,call是将各个参数以“,”隔开,而apply是将所有参数组成一个数组进行传递。举例来说明两个方法的用法:
    function funa() {
       this.o = "I'm string o";
       this.i = "I'm string i";
       //未定义this.u,但调用的是funb里面的,所以定不定义都无所谓;
       this.fun = function(t,z) {
           var s = "this.o: " + this.o + "\nthis.i: " + this.i + "\nthis.u: " + this.u + "\nt: " + t + "\nz: " + z;
           alert(s);
       }
    }function funb() {
       this.o = "I'm other string o";
       //未定义this.i,所以返回undefined
       this.u = "I'm string u";
    }var a = new funa();
    var b = new funb();/*
    运行a对象的fun方法时,将a的this转为b对象的this
    因此funa里面的this.o实际是funb里面的this.o
    */
    a.fun.call(b,"1st arg","2nd arg");从上面的例子可看出:
    obj1.method1.call(obj2,argument1,argument2)
    简单的说就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入.
      

  2.   

    谢谢rjzou2006,经你解释对call的用法有了更深的了解。虽然还是不太明白上面那个个函数的实际意义,但是我想可能还是理解不够深入,等再多了解相关知识,回头再看可能会有更好的理解吧。不管怎样还是谢谢了,分送了。