日期:2014-05-16  浏览次数:20346 次

关于数组中存放funciton的this指代问题
var n = [];
        n.push(function(){alert(this)});
        n[0](); //为什么这里的this指代是数组对象
var bb =n[0];
    bb();  //这里的this指代的是window对象

------解决方案--------------------
 n[0]();  是n 对象下"0" 属性
 var bb =n[0];  
  bb 相当 于 window.bb 
 
------解决方案--------------------
function func() { alert(this);}
        var n = [];
        n.push( func);
        n[0](); //为什么这里的this指代是数组对象
        var bb = n[0];
        bb();  //这里的this指代的是window对象
        var obj = {func:func };
        obj.func(); //现在this是object
应该这样理解吧.
 n[0](); ===func.call(n);
 bb();   ===func.call();
 obj.func()===func.call(obj);
------解决方案--------------------
var A = {
a : function(){
var $a = this;
alert($a);
}
}
A.a();
var $b = A.a;
$b();