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);
~
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号