说到this,对于它的理解就是:this是指向函数执行时的当前对象,倘若没有明确的当前对象,它就是指向window的。
1.setTimeout(functtion(){this},1000)
setTimeout()函数中的this永远指向window;
2.函数中的函数指向window
eg1:对象函数中的函数
var name="john";
var obj={
name:"frans",
show:function()
{
sub_show()
{
alert(this.name);
}
}
}
输出结果是:john
eg2:普通函数内的函数
var name="john":
funtcion User()
{
this.name="frans";
var sub_show=function()
{
alert(this.name);
}
}
输出:john;
因为这时this指向window,若想让this指向对象本身,可以子函数外将this赋给一个变量如that;在子函数中用that代替this就可以了。
eg
var name="john";
var obj={
name:"frans",
show:function()
{
var that=this;
sub_show()
{
alert(that.name);
}
}
}
此时会输出:frans
对象中定义函数;
<script>
var name="john";
var obj=
{
name:"frans",
show:function()
{
//alert(123);
var that=this
sub_show=function()
{
alert(that.name);
}
sub_show();
}
}
obj.show();
</script>
函数对象中定义函数
<script>
var name="john";
function User()
{
this.name="frans";
this.show=function()
{
function sub_show()
{
alert(this.name);
}
sub_show();
}
}
var obj=new User();
obj.show();
</script>
相关链接: