this在编程中很容易遇到,但是在实际的运用中很容易被弄混,那么我们怎样才能分得清this究竟指的是谁呢?结合具体的实例,以笔记的形式展示出来,让大家理解this的真面目,当然使用this是有前提的,讲解从本例实际出发,读者可以结合自身情况去理解在读者使用环境下的this究竟指的是什么。
这种情况主要是再前端代码优化的情况下考虑的问题。在写代码的时候会通过全局变量的方式来实现初步的效果,但是效果出来后,变量作为全局变量就很危险,要保证变量之间不冲突,且各施其职,那就必须对变量以及函数进行封装,本例中的封装如下:
var home = {
a:[], //home中的全局变量
init:function(){ //初始化所有内容函数
this.函数名(); //调用home里面的其他函数 ------------ this指的是home
} ,
函数名:function(){
var self = this; //将指向home的this保存在self中
//this易混淆的地方在下面,若没有将全局的this给self,就容易出错
$(selector).find("a").each(function(){
$(this).click(function(){ //this指的是selector下当前操作的项
self.a = this.xxx; //当前项this去操作home项内容
})
})
}
}
home.init(); // 执行初始化内容,让页面执行
很多时候会遇到this的嵌套问题,但是只要在恰当的时机保存好this,就能准确的知道this是哪一个的this,也就不会被this绕进去啦。
方法:及时保存this给一个变量。在清醒的状态下理清谁是谁。