<script type="text/javascript">
var value="1";
window.onload=function()
{
var oBtn=document.getElementsByTagName('input')[0];
oBtn.onclick=function()
{
function fn()
{
alert(this.value);
}
fn(); //打印出1
}
}
</script>
<body>
<input type="button" value="click">
</body>请问函数fn内的this为什么指向了window
3 回答

ruibin
TA贡献358条经验 获得超213个赞
function fn()
{
alert(this.value);
}
这个函数的运行环境是window,所以这里面的this指向window。如果你想打印出oBtn的value值,函数可以这样改造下,
window.onload=function()
{
var oBtn=document.getElementsByTagName('input')[0];
oBtn.onclick=function()
{
var _this = this; //此时运行环境中的this为oBtn
function fn()
{
alert(_this.value);
}
fn(); //打印出1
}
}

滄浪之水
TA贡献15条经验 获得超2个赞
this 问题很简单,this总是指向当前调用的对象,如 object.method 如果没有隐去了调用的对象,则一般为全局对象,浏览器中是window对象, 在nodejs中是global对象。
添加回答
举报
0/150
提交
取消