32、JavaScript this和找到当前点击按钮的下标

this:只要封住函数,任何一个函数系统都会内置一个叫做this的变量。this变量存储的是地址,是当前函数主人的地址。
常用的情况:

对象的函数属性

 
一般情况下: this==obj,也就是说obj是当前函数的主人。所以说this存储当前主人的地址,并且指向当前主人。(this指向是可以通过apply和call以及bind方法更改的)

全局模式下的函数:

一般来说,函数如果处于全局模式,this指向都是window。但是如果使用严格模式this就是undefined
 
 
事件处理函数:
 
在上面案例中,点击三个按钮输出的都是3。因为循环给每个按钮都添加了点击事件驱动函数(相当于给 每一个btn对象添加事件onclick,属性值为一个函数。也就是说这个函数的主人就是当前按钮)。但是当我们点击事件的时候循环早就已经结束了。记住:i的内存空间并没有被释放,并且三个事件函数都是用的是同个i。
解决:

一:e.target和节点自定义属性
 
二:this和节点自定义属性
 
案例:选项卡
 

<!DOCTYPE html>
<html>
	<head