Function的原型的两个方法 Function.prototype.call和Function.prototype.Apply

    用法一模一样,区别在于参数不一样。

    • bind 用来指定函数内部this的指向
      1. Function.prototype.bind = function( context ){
      2. var self = this; // 保存原函数
      3. return function(){ // 返回一个新的函数
      4. return self.apply( context, arguments ); // 执行新的函数的时候,会把之前传入的 context
      5. // 当作新函数体内的 this
      6. }
      7. };
      在 Function.prototype.bind 的内部实现中,我们先把 func 函数的引用保存起来,然后返回一 个新的函数。当我们在将来执行 func 函数时,实际上先执行的是这个刚刚返回的新函数。在新 函数内部,self.apply( context, arguments )这句代码才是执行原来的 func 函数,并且指定 context 对象为 func 函数体内的 this。