我的地图上有一些带有自定义图标(DivIcons)的标记。
当我点击一个标记时,我想访问图标的HTMLElement,添加或删除类。
我发现访问HTMLElement的唯一方法是_icon
属性。我知道这是私有财产,但我找不到另一种方式。
options.icon
返回图标对象(由许多标记使用),而不是此标记的具体HTMLElement。
您是否知道一种安全的方式来访问标记的HTMLElement?
答案 0 :(得分:4)
不幸的是,JavaScript没有私有属性的本机支持。但是,有几种技术可以模拟它们:一种使用前缀,另一种是闭包。
使用下划线前缀只是一种编码约定,并不是由语言强制执行的:没有什么可以阻止用户直接访问“应该是私有的”属性。此方法不安全,仅作为客户端代码的准则。所以我认为访问_icon
财产不会造成任何伤害。
如果属性应该是私有的,不可能从外部访问,则通常将其设置为某个范围的局部变量,而不绑定到上下文。这种类型的变量只能在闭包的帮助下从外部访问,如果没有定义,则无法访问变量。
答案 1 :(得分:1)
我找到了一种记录方式来访问它:
由于我处于“点击”事件中,我可以在回调中使用event.originalEvent.target
访问标记的HTMLElement。