如何通过给定的字符串名称动态创建对象?

时间:2016-03-12 22:18:56

标签: javascript jointjs

我正在尝试从给定的字符串创建对象。字符串值应该是新对象的名称。我创建了一个根对象,并通过给出一个字符串名称并从根对象克隆来创建后续对象。

我正在使用jointJs。

这是根对象

var lvl0 = new joint.shapes.basic.Rect({
    position: { x: 100, y: 30 },
    size: { width: 100, height: 30 },
    attrs: { rect: { fill: '#31d0c6', stroke: 'none',  filter: { name: 'dropShadow',  args: { dx: 3, dy: 6, blur: 3, color: '#333333' }} }, 
             text: { text: 'lvl0', fill: '#ffffff' }, 
             style: { 'text-shadow': '1px 0 1px #333333' }  }

});

然后是克隆根对象并将给定名称分配给新对象的函数。

function add_cell(parent, child, lvl, color) {
  if (lvl === 0)
  { var child = parent.clone().translate(0, 0).attr('text/text', child);  }
  else { var child = parent.clone().translate(200, 0).attr('text/text', child).attr('rect/fill', color); }
  graph.addCell(child);
  if (lvl != 0) {  createLink(parent, child).set(createLabel('0,N     1,1')); }
}

这是主叫代码。

var lst = [ { "parent": "lvl0", "child": "dept", "lvl": 0, "color": "green" }, { "parent": "dept", "child": "empl", "lvl": 1, "color": "yellow" } ];
for (var i = 0; i < lst.length; i++) {
  add_cell (window[lst[i].parent], lst[i].child, lst[i].lvl, lst[i].color);
}

第一个克隆成功,因为克隆的对象 lvl0 是现有对象。但是第二个克隆将失败,因为对象 dept 不存在。而是将变量覆盖到克隆对象。我基本上需要将克隆对象从重命名为 dept 。我怎么能这样做?

谢谢,

0 个答案:

没有答案