我通过曲面创建了一个形状对象。现在我希望将一些自定义状态与它联系起来。我可以用最直接的方式做到这一点:
var rect = surface.createRect(...);
rect.myCustomData = ...;
并希望dojo或gfx的任何部分都没有任何逻辑需要完全相同的属性名称。
在dojo中是否有办法安全地定义由它生成的对象的自定义数据?
P.S。
我可以使用GUID作为属性名称来定义属性包。但它很难看,不是吗?
答案 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
属性中的数据。
然后您确定没有其他框架会依赖它,但这意味着您在创建,更新或删除形状时必须保留两个单独的部分。