this及其作用域(函数外部this变量的调用)

  众所周知的一件麻烦事是函数外部的this变量都不可见,但是我们在编写使用局部函数的方法时,却又很可能需要在某一时刻从内部函数访问this变量。

  这种情况下可以通过在this变量中存储一个需要的信息(例如在内部函数中可见的endOfLine),如果需要访问整个this对象,也可以将它保存到一个变量上,这种变量通常采用名称self(或者that).但是那么多的变量又会使代码看起来很乱。另一个比较好的解决方法是使用类似分布函数的函数,这种方法没有增加函数的参数,而是将this对象作为函数apply方法的第一个参数。通过这种方法,可以将内部函数bind到this上,它将与外部函数拥有同样的this对象。

 1 function bind(func,object){
 2     return function(){
 3       return func.apply(object,arguments);
 4     };
 5 }
 6 
 7 var x=[];
 8 var pushX=bind(testArray.push,testArray);
 9 pushX("A");
10 pushX("B");
11 x;
12 //输出["A","B"]


或者是下面更简单的写法

function method(object,name){
    return function(){
        object[name].apply(object,arguments);
    };
}
var pushX=method(x,"push");
原文地址:https://www.cnblogs.com/s-z-y/p/4490540.html