this是javascript中功能最强大的关键字之一。
在javascript中,由于javascript的动态性(解释执行,当然也有简单的预编译的过程),this的指向在运行时才能确定,这个特性再给我们带来迷惑的同事也带来了编程的自由和灵活,结合apply(call)方法,可以使javascript变得异常强大。
变化中的this
在javascript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)。当我们在页面中定义了函数doSomething()的时候,它的owner是页面,或者是javascript中的window对象。对于一个onclick属性,它为它所属的html拥有,this应该指向该html元素。
实例
function doSomething(){
this.style.color="#ff3300";
}
1.作为普通函数直接调用时,this指向window对象。
2.作为控件事件触发时
1)内联事件注册<element οnclick="doSomething()">,此时this指向window对象。
2)传统事件注册<element οnclick=doSomething>,此时this指向html对象。
3)内联事件注册<element οnclick="doSomething(this)">,作为参数传递可以指向element。
3.作为对象使用时tihs指向当前对象。形如:new doSomething();
4.使用apply或者call方法时,this指向所传递的对象。