将事件侦听器添加到 JavaScript 对象

Add event listener to JavaScript object

我正在从数据库中取回 JavaScript 个对象数组。我正在遍历该数组并创建要在屏幕上显示的对象。我正在尝试对每个对象使用 .addEventListener(),但我刚刚意识到 addEventListener() 仅适用于 DOM 个对象。

如何为每个 JavaScript 对象添加事件侦听器?

这是我的代码:

    var objects = JSON.parse(data.responseText);
    var i;
    var objectLn = objects.length;

    for (i = 0; i < objectLn; i++) {

        //Puts each object into a variable
        var eachObject = objects[i];

        //Establishes pin position
        var pinPos = {
            lat: parseFloat(eachObject.lat),
            lng: parseFloat(eachObject.lng)
        };

        //Creates new icon for pin
        var icon = {
            url: "path/to/img",
            scaledSize: new google.maps.Size(60, 60),
            origin: null,
            anchor: null
        };

        //Creates a new pin from pulled information
        var pin = new google.maps.Marker({
            position: pinPos,
            map: map,
            icon: icon
        });

        //Alerts each object on click
        pin.addListener('click', function() {
            alert(JSON.stringify(eachObject));
            map.panTo(pinPos);
            map.setCenter(pinPos);
        });
    }

addListener 正在为每个丢弃的引脚添加一个 'click' 侦听器,这很好。问题是它应该提醒每个对象,但它只提醒我在单击每个图钉时从数据库中检索到的最后一个对象。

试着像这样做循环..

for (i = 0; i < objectLn; i++) {
    (function(eachObject){
        // copy the loop contents here. eachObject is already defined.
    })(objects[i]);
}