fabric 序列化增加额外属性

画布的保存撤销等,都需要进行序列化当前画布内容。

那额外定义的属性目前 fabric 是不会自己去序列化,于是就有了扩展 toObject 的解决方法:

let rect = new fabric.Rect(Rect.defaultRect());
rect.toObject = (function(toObject) {
    return function() {
        return fabric.util.object.extend(toObject.call(this), {
            name: this.name,
        });
    };
})(rect.toObject);
canvas.add(rect);

 

但这么写也是不太方便,不可能每次序列化都要对实例的 toObject 方法做处理,查了下还真有一劳永逸的办法:

fabric.Object.prototype.toObject = (function(toObject) {
    return function() {
        return fabric.util.object.extend(toObject.call(this), {
            name: this.name,
        });
    };
})(fabric.Object.prototype.toObject);

~

 

posted @ 2022-04-26 13:47  名字不好起啊  阅读(193)  评论(0)    收藏  举报