Javascript的this详解

作者:邹阳 | 发表于:2016-04-17 19:02:35

阅读量:(261) | 所属栏目:编程

指的是调用当前方法、函数的那个对象

一、this作为内容一部分时:
function fn1(){  alert(this ); }
fn1() //this=>window   相当于window.fn1()
oDiv.onclick = fn1;    //this=>oDiv  因为是div让它动的
oDiv.onclick = function(){
    this   //oDiv
    fn1()  //fn1()里的this指向window   相当于window.fn1()
}
现在比较少的写法里的this:
<div onclick="this  或者  fn1    "  ></div>   只要是在onclick引号里面能看到的this,都是指div,但是如果里面是一个函数,函数里的this指的就是window了。

二、this作为参数传递时:
fn1(this);   //如果你alert一个this  是window的
function fn1(obj){ alert(obj);}   //obj指向window
oDiv.onclick = function(){
    fn1(this);   //this指div ,因为在function内部的第一层的this都是指div
}

三、循环里的this
var box = ......    //将定box是一个集合
function fn1(){ alert(this) };
for(var i=0;i<box.length;i++){    //3中情况如下:
    box[i].onclick = function(){  alert(this)   }    //this指box
    fn1()    //里面this指window,如果要让fn1函数内部的this也指向box,可以在for循环外部先声明一个var a=null; 然后在for循环内将a赋值给this   a= this; 再把fn1函数内部的alert(this)改为alert(a)
    box[i].onclick = fn1;    //fn1内部的this指box,因为fn1是背box调用的
}
回复内容:(还能输入1000字)
验 证 码: