为什么说我的方法未在javascript中定义?

时间:2020-05-23 22:00:40

标签: javascript listener

我有一个JavaScript代码,并且向我的对象添加了一个事件监听器。 当我单击它时,它表示未定义我的功能。 这是我的js代码:

class Plane {
    constructor(myMap, myPos, listener) {
        this.createMarker(myMap, myPos);
        this.clickListner = listener;
    }

    createMarker(myMap, myPos) {
        var icon = {
            url: "../Images/Plane.png", // url
            scaledSize: new google.maps.Size(30, 30), // scaled size
            origin: new google.maps.Point(0, 0), // origin
            anchor: new google.maps.Point(15, 15) // anchor
        };
        this.marker = new google.maps.Marker({
            map: myMap,
            icon: icon,
            position: myPos
        });
        this.marker.addListener('click', function () { this.pressed(); }, false);
    }

    pressed() {
        this.clickListner.onClick(this);
    }
.
.
.

当我按下标记时出现此错误:

Uncaught TypeError: this.pressed is not a function

为什么不起作用?

1 个答案:

答案 0 :(得分:6)

未使用正确的上下文,您可以使用箭头功能解决此问题

this.marker.addListener('click',() => { this.pressed(); }, false);
                                   ^