Javascript的this详解
作者:邹阳 | 发表于:2016-04-17 19:02:35
阅读量:(331) | 所属栏目:编程
指的是调用当前方法、函数的那个对象
一、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调用的
}
一、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调用的
}