js中的this关键字,不是应该指向调用调用它的当前对象吗

HelloBitches 2016-08-22 02:08:46
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="css/style.css" />
<script type="text/javascript">
function load(){
alert(this);
}
</script>
</head>
<body>
<div>
<img onload="load()" src="images/1.jpeg" alt="" />
</div>
</body>
</html>
...全文
1725 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
KK3K2005 2016-08-23
  • 打赏
  • 举报
回复
<img onload="load()" src="images/1.jpeg" alt="" /> 这样写的话 相当于 img.onload = function(){ load(); //这个时候 load 里面的this 肯定不是img了 } 2种办法 1)img.onload = load 2) <img onload="load(this)" src="images/1.jpeg" alt="" /> //直接吧this传进去 这个this 就是 当前dom元素
myqoo 2016-08-23
  • 打赏
  • 举报
回复
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<link rel="stylesheet" href="css/style.css" />
	<script type="text/javascript">
		function load(){
			alert(this);
		}
	</script>
</head>
<body>
	<div>
		<img id="img1" src="images/1.jpeg" alt="" />
                <script>
                        img1.onload = load;
                </script>
	</div>
</body>
</html>
天际的海浪 2016-08-22
  • 打赏
  • 举报
回复
在html标签中onload="load()" 会被浏览器解析成js语法的
onload=function (event) {
	load()
}
img标签真正的onload事件是外层那个匿名函数function (event) load()函数是作为单纯函数调用的,this指向全局对象
HelloBitches 2016-08-22
  • 打赏
  • 举报
回复
百度了一下,一篇文章里有这样两句话:
1.当函数作为对象的方法调用时,this指向该对象。
2.当函数作为单纯函数调用时,this指向全局对象(严格模式时,为undefined)
我认为我上面的代码应该是上面两句话中的第一种情况,就是img对象调用这个方法,然后也应该输出img标签的信息,但是结果,却是第二种输出情况,难道img标签onload事件不能算是对这个方法的调用吗
HelloBitches 2016-08-22
  • 打赏
  • 举报
回复
上面这段代码执行后为什么不是输出img标签而是window呢

4,008

社区成员

发帖
与我相关
我的任务
社区描述
它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。
社区管理员
  • vbScript社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧