在事件处理程序中触发类方法

时间:2018-07-02 21:24:59

标签: javascript event-handling

class Controller {

    constructor(names){
        this.names = names;
    }

    sayhello(name){
        console.log("Hello " + name);
    }

    makeLink() {
        this.names.forEach(function(name){
            var link = document.createElement('li');
            link.innerHTML = name;
            var container = document.getElementById('container');
            container.appendChild(link);
            link.addEventListener('click', (event) => {
                sayhello(event.target.innerText);
            });
        });
    }
}

这是我要在实际代码中尝试执行的示例。我想在单击“ li”时触发类方法“ sayhello”,以便打印出与“ li”相对应的名称。但是,它似乎不起作用。我尝试寻找解决方案,但仍然找不到运气。有谁知道我该怎么做?

1 个答案:

答案 0 :(得分:2)

sayhellomakeLink的范围内不存在,但是在它的上下文中(也称为this),因此您必须注意不要通过forEach {{1 }},那么您可以轻松访问它:

function