当事件侦听器调用方法时,将类方法“ this”的引用切换回类实例

时间:2019-02-17 13:35:08

标签: javascript

点击下面代码中的Click me!按钮,将引发以下错误:

  

TypeError:this.create_name不是函数

因为我使用的是事件监听器,所以在show_name函数this中实际上是button

如何使this引用test_obj

<!DOCTYPE HTML>
<head></head>
<body>
<script>

function Namer() {
    this.create_name = function() {
        var name = 'John'
        return name
    }
    this.show_name = function() {
        console.log(this)
        console.log(this.create_name()) }
}

var test_obj = new Namer('John')
var button = document.createElement('button')
button.textContent = 'Click me!'
document.body.appendChild(button)
button.addEventListener('click', test_obj.show_name)

</script>
</body>
</html>

如果我不使用事件侦听器,而将最后一行替换为just:

,则相同的代码将可以正常工作。

test_obj.show_name()

0 个答案:

没有答案