this在执行的时候才能确认值,定义时无法确认。可以表示当前对象、全局对象,或者任意对象。(取决于函数的调用方式,this绑定的对象即函数执行的上下文环境)
this丢失的解决问题
1.用一个局部变量存放当前的this指针
2.使用call、apply和bind改变函数执行时的上下文(this)
var test = {
a : 1,
b : 6,
sum : function (a,b) {
var self = this;
function getA() {
return self.a;
}
function getB(){
return self.b;
}
alert(a);
alert(b);
return getA() + getB();
}
}
var obj= {a:3,b:3};
//
alert(test.sum.call(obj,4,5)); // 调用时self = this = obj,alert顺序4,5,6;;
解决事件绑定时的this以及传参的问题了,包括现在常用js框架中的事件绑定,如jQuery、signals.min.js等等。