簡體   English   中英

如何以安全的方式在dojo gfx形狀上定義自定義屬性?

[英]How to define a custom property on a dojo gfx shape in a safe way?

我已經通過曲面創建了一個形狀對象。 現在,我希望將一些自定義狀態與其關聯。 我可以用最直接的方式做到這一點:

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

並希望dojo或gfx的任何部分都沒有期望完全相同的屬性名稱的邏輯。

dojo中是否有一種方法可以安全地定義由它生成的對象的自定義數據?

聚苯乙烯

我可以使用GUID作為屬性名稱來定義一個屬性包。 但這很丑,不是嗎?

無法確保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屬性內檢索data

然后,您可以確定沒有其他框架會依賴它,但這意味着在創建,更新或刪除形狀時必須維護兩個單獨的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM