https://jsfiddle.net/6CDFr/229/
function testing() {
foo = canvas.getObjects();
bar = JSON.stringify(canvas.getObjects());
console.log(foo);
console.log(bar);
}
JSON.stringify()正在改变" x1"," y1"," x2"和" y2"属性,如上面的JSFiddle链接中所详述,我不确定原因。
答案 0 :(得分:0)
来自JSON.stringify(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON_behavior)
的(Mozilla)文档toJSON()行为
如果要进行字符串化的对象具有名为toJSON的属性,其值为 是一个函数,然后toJSON()方法自定义JSON 字符串化行为:而不是被序列化的对象, 调用时,toJSON()方法返回的值将被序列化。 例如:
如果您使用以下内容,则应获得类似的值
function testing() {
foo = canvas.getObjects()[0];
bar = JSON.stringify(canvas.getObjects()[0]);
console.log(foo.toJSON());
console.log(bar);
}
或者如果你将toJSON属性设置为undefined(但我非常确定会对fabric.js造成严重破坏,除非你在对象的副本上执行它 - 我已经#ve;直接在下面的对象上完成)
function testing() {
foo = canvas.getObjects();
bar = JSON.stringify(canvas.getObjects().map(function (o) {
o.toJSON = undefined;
return o
}));
console.log(foo);
console.log(bar);
}