如何以安全的方式在dojo gfx形状上定义自定义属性?

时间:2014-04-11 11:46:26

标签: javascript dojo

我通过曲面创建了一个形状对象。现在我希望将一些自定义状态与它联系起来。我可以用最直接的方式做到这一点:

var rect = surface.createRect(...);
rect.myCustomData = ...;

并希望dojo或gfx的任何部分都没有任何逻辑需要完全相同的属性名称。

在dojo中是否有办法安全地定义由它生成的对象的自定义数据?

P.S。

我可以使用GUID作为属性名称来定义属性包。但它很难看,不是吗?

1 个答案:

答案 0 :(得分:0)

无法确定JavaScript的其他部分是否依赖于该属性。在覆盖之前,您总是可以尝试验证它是否存在,例如:

var rect = surface.createRect({
    // Properties
});
if (rect.myCustomData === undefined) {
    rect.myCustomData = myValue;
}

但是你仍然不是100%肯定,也许应用程序的某些部分依赖于该属性不存在。即使情况并非如此,您的财产仍然可以被覆盖。


另一种方法是提供一个单独的地图"包含您的自定义数据,例如通过以下内容:

var rect = surface.createRect({
    // Properties
});

var myCustomData = [ ];
myCustomData.push({
    shape: rect,
    data: myValue
});

要检索数据,您必须遍历地图,查看shape属性是否与您的形状匹配,然后检索data属性中的数据。

然后您确定没有其他框架会依赖它,但这意味着您在创建,更新或删除形状时必须保留两个单独的部分。