Fabric.js: 如何serialize/deserialize一些全局数据?如何扩展 canvas 对象?

Fabric.js: How to serialize/deserialize some global data? How to extend the canvas object?

如何向 canvas 对象添加额外的属性,以便它们获得 serialized/deserialized?例如。我想为使用 canvas.toJSON() 获得的数据存储一个 name 并存储在服务器端。

这样扩展 canvas 有意义吗?或者你会建议创建一个 "meta object" 包含我的附加数据和一个 属性 用于 canvas json?

您可以将具有附加属性的数组传递给 Canvas.toJSON() 方法,如下所示:

const canvas = new fabric.Canvas('c')
canvas.myProp = 'MyCanvas'

const serializedCanvas = canvas.toJSON(['myProp'])
console.log(serializedCanvas.myProp) // 'MyCanvas'

请注意,此数组在序列化期间也会传递到每个对象的 _toObject() 方法中,因此将自定义 属性 列表保持在最低限度是有意义的。