【发布时间】:2018-06-07 23:26:03
【问题描述】:
在看到这段代码之前,我以为我理解了“this”关键字:
<body>
<button onclick="go()">clic1</button>
<button id="btn">clic2</button>
<script>
function go() {
console.log(this);
}
var btn = document.getElementById("btn");
btn.onclick = function() {
console.log(this)
}
</script>
</body>
我有一个带有两个按钮的 HTML 文档,单击时它们执行相同的操作:它们记录“this”关键字。
我很惊讶他们没有显示相同的结果:
对于按钮“clic1”:this = Window
对于按钮“clic2”:this = id 为“btn”的按钮对象
对此有什么解释吗?
谢谢
【问题讨论】:
-
Afaik,第一个按钮的 onclick 是一个执行
eval("go()")的函数,它导致go丢失上下文并恢复为window作为上下文。这是内联代码不好的众多原因之一。
标签: javascript this handler