解决this的问题
一般来说解决this的问题,主要就是解决两个问题
1、this变成widow以后,如何使用this
一般常见的做法是在定义内部方法前,使用var that = this;将this的引用放进that里,再在内部方法中访问that来实现
//计算出在线的时间
function getOnlineTime(now, unit){
var that = this;
var getHour = function(){
var date = new Date(); //获取当前时间
var logonTime = that.logonTime; //通过that关键字获取到了上线时间
//some code here;
};
if(unit == "h") return getHour();
};
2、this当完全不知道this可能是什么的时候,如何访问我想要访问的实例
一般常见的做法是避免在内部、嵌套、回调函数中使用this,而通过参数传递,我们可以把上面的例子改造成这种解决方式: function getOnlineTime(now, unit){
var getHour = function(e){
var date = new Date(); //获取当前时间
var logonTime = e.logonTime; //通过that关键字获取到了上线时间
//some code here;
};
if(unit == "h") return getHour(this); //这里因为没有内部、嵌套、回调函数,所以this就是当前实例,于是将this作为参数传递,以保证getHour时的参数就是所需要的实例
}; ```