本文实例分析了JavaScript中this的用法。分享给大家供大家参考,具体如下:
一."this"公理
window
oDiv.onclick=fn1; //this=>oDiv
oDiv.onclick=function(){
this //this=>oDiv
fn1(); //this=>window
}
rush:xhtml;">
//这种行间脚本的写法现在非常罕见
这里的this指向div,fn1()里的this指向window
rush:js;">
var it=
{
info:["腾讯","搜狐","新浪","百度"],getinfo:function()
{
alert(this.info.join(","));
}
};
it.getinfo();
二.函数赋值给变量时的"this"问题
rush:js;">
var it=
{
info:["腾讯","));
}
};
var data=it.getinfo;
data();
输出:报错,TypeError: this.info is undefined
代码相当于
rush:js;">
var data=function(){
alert(this.info.join(","));
};
data();
这里的this指向window,这里的data是被赋值,如果是var data=it.getinfo();那就是调用,结果还是腾讯,百度。如果alert(this.it.info.join(","));结果还是腾讯,百度。
rush:js;">
var info=["QQ","sohu","sina","baidu"]
var it=
{
info:["腾讯","));
}
};
var data=it.getinfo;
data();
输出:QQ,sohu,sina,baidu
三.作为对象方法调用时的"this"问题
rush:js;">
function test()
{
alert(this.x);
}
var o={};
o.x=1;
o.t=test;
o.t();
输出:1
四.作为构造函数调用时的"this"问题
输出:1
输出:1,2
五.闭包中的"this"指向问题
rush:js;">
var it=
{
info:["腾讯",getinfo:function()
{
function abc(){
alert(this.info.join(","));
}
abc();
}
};
it.getinfo();
输出:报错,TypeError: this.info is undefined
闭包中的this不能指向it
rush:js;">
var it=
{
info:["腾讯",getinfo:function()
{
var _this=this;
function abc(){
alert(_this.info.join(","));
}
abc();
}
};
it.getinfo();
优点:无论外部函数名字(it)怎么变,都能指向info
更多关于JavaScript相关内容可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。