我曾经认为我很理解"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”的按钮对象
是否有任何解释?
谢谢
eval("go()")
函数的方法,这会导致go
失去上下文并恢复为window
作为上下文。这是内联代码不好的众多原因之一。 - user5734311