事件创建中的javascript绑定(bind)对象

标签 javascript html events bind

我实际上陷入了一个简单的(很确定是)示例。

<div id="first">first</div>
<div id="second">second</div>
<script>
    var JSClass = {
        element : null,
        click : function() {
            console.log(this.element.id);
        },
        created : function(element) {
            this.element = element;
            this.element.addEventListener('click', this.click.bind(this));
        }
    };
    JSClass.created(document.querySelector('#first'));
    JSClass.created(document.querySelector('#second'));
</script>

通过在创建事件时绑定(bind)整个对象,我应该在单击第一个元素时获得“first”,在单击第二个元素时获得“second”,但事实并非如此。 它对我使用的其他对象具有完整的功能,但这个简单的案例不起作用...

最佳答案

您不是在创建类,而是在创建对象。

因此,每次您对该对象调用 .created 时,您都会覆盖其中的元素。

尝试使用 Object.create 制作两个不同的对象

var JSClass = {
    element : null,
    click : function() {
        console.log(this.element.id);
    },
    created : function(element) {
        this.element = element;
        this.element.addEventListener('click', this.click.bind(this));
    }
};

var first = Object.create(JSClass);
var second = Object.create(JSClass);

first.created(document.querySelector('#first'));
second.created(document.querySelector('#second'));

fiddle

关于事件创建中的javascript绑定(bind)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40451934/

相关文章:

javascript - 仅当窗口关闭时才触发 onbeforeunload (包括工作示例)

javascript - 使用 Javascript 更新总价

JavaScript 日历仅接受 future 日期

html - 为什么表格宽度和文本大小相对于彼此的比例不同?

html - 使用 JSP 将数据库中的自动增量 ID 显示到 html 文本字段中

javascript - 使图像适合视口(viewport)

javascript - 如何使用 Joi 验证以太坊地址

javascript - Instagram API - 使用 jquery 获取图像

javascript - 我们如何在脚本标签中正确使用 polymer 属性?

php - 在线时 CodeIgniter 验证码图像不起作用