将函数分配给 JavaScript 对象时出现问题

Having Issue on Assigning Functions to JavaScript Object

我有一个像

这样的 JS 对象
var map = {
    prov1: { paper.path("M182.89887,371.5666L18,.... },
    prov2: { paper.path("M182.89887,371.5666L18,.... },
    prov3: { paper.path("M182.89887,371.5666L18,....}
};

现在我需要为这些属性中的每一个分配一些功能,例如

 $(map.prov1).hover({
   alert("You Assigned A Task to prov1");
});

在一个工作示例中它应该像

 $(prov1).hover({
   alert("You Assigned A Task to prov1");
});

但是如你所知,我无法直接访问 $(prov1)$(map.prov1) returns 作为 [object object]!

能否请您告诉我如何将对象的 name 而不是 value 获取到 运行 函数?

你需要这样的东西吗?

var map = {
    prov1: function() { return paper.path("M182.89887,371.5666L18,.... ")},
    prov2: function() { return paper.path("M182.89887,371.5666L18,.... ")},
    prov3: function() { return paper.path("M182.89887,371.5666L18,....")}
};

map.prov1();

我认为您在此处使用 jquery 是在试图使它过于复杂,而实际上不需要它。

你可以简单地做...


var paper = new Raphael('test', 200, 200);

var attrs = { fill: 'blue' }

var map = {
    prov1: paper.rect(10,10,20,20).attr( attrs ) ,
    prov2: paper.rect(40,40,50,60).attr( attrs ) ,
    prov3: paper.rect(50,60,70,80).attr( attrs )
};

map.prov1.click( function() {  alert('Hi Im prov1') } ); 

jsfiddle

如果你需要遍历对象,你可以这样做

Object.keys( map ).forEach( function( el ) { 
    map[el].click( function() { alert('Hi, Im ' + el) } ); 
} );

jsfiddle 需要迭代的方法