通过原型继承对象

Inheritance of an object through prototype

本文关键字:对象 继承 原型      更新时间:2023-09-26

我知道这个问题表明我对基于对象编程的基本概念感到困惑,但我希望有人能帮助我,因为我似乎无法理解:

function MagnifyGlass(){
    var magnifiedTiles = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png');
    var magnifyingGlass = L.magnifyingGlass({layers: [ magnifiedTiles ]});
    this.magnifyingGlass = magnifyingGlass;
}
MagnifyGlass.prototype.begin=function(){
    $("#map_canvas").mouseenter(function(){
        this.magnifyingGlass.addTo(map);
    }).mouseleave(function(){
        map.removeLayer(this.magnifyingGlass);
    });
}
MagnifyGlass.prototype.end=function(){
    map.removeLayer(this.magnifyingGlass);
    $("#map_canvas").unbind();
}
var mg= new MagnifyGlass();
mg.begin();

我想在这里实现的是,MagnifyGlass创建一个对象,该对象用作传单映射(位于div map_canvas中)中的层。然后,通过调用.begin.end,我切换该层是否出现。我正确地创建了层(magnifyingGlass),并且调用了.begin,但不知何故,magnifyingGlass对象没有到达原型,我很确定我不知怎么搞砸了。谢谢你的帮助。

这是一个范围问题。这里有一个修复:

MagnifyGlass.prototype.begin=function(){
    var self = this;
    $("#map_canvas").mouseenter(function(){
        self.magnifyingGlass.addTo(map);
    }).mouseleave(function(){
        map.removeLayer(self.magnifyingGlass);
    });
}

LJ_1102就是这么说的。