关于JS里的this问题。

<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

kevinZee
浏览 2283回答 3
3回答

ruibin

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    }}

滄浪之水

this 问题很简单,this总是指向当前调用的对象,如 object.method 如果没有隐去了调用的对象,则一般为全局对象,浏览器中是window对象, 在nodejs中是global对象。

qq_e累_0

应该是你生声明了一个全局函数(fn)   ;fn 是window下的。 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript