无法读取javascript中未定义的属性“ set”

时间:2019-11-07 12:01:19

标签: javascript fabricjs

我正在使用fabric 3.4创建一个提供klass对象的canvas元素。

说,我将变量a设置为

a = klass {lockScalingX: true}

我将其克隆到b并使用一些字典对象更新b

b = a.clone();
b.set({lockMovementY: true});

但这会带来错误,

index.html:3 ERROR TypeError: Cannot read property 'set' of undefined

当我登录ab时。克隆后的b是undefined

如何克隆klass对象并使用set()更新值?

还是将结构的klass更改为简单对象?

  

编辑2

这是控制台日志的屏幕截图。

enter image description here

这是一个阵列,控制台上有键8、9、10的打印内容。我已展开8以显示键中包含的值。

b[s] = a[s].clone();
console.log('a: ', a);        // This consoles the first code in the question.
console.log('b[s]: ', b[s]);  // This prints undefined

b[s].set({lockMovementY: true});  // This is giving error. Cannot read property set of undefined.

1 个答案:

答案 0 :(得分:0)

我通过调用结构的toObject()方法解决了这个问题。

我以前使用的是Fabric 1.x,现在正在进行项目改造。将Fabric升级到3.x之后,我开始遇到此问题。创建织物画布时,将返回klass类型的对象。

const canvas = new fabric.Canvas();

为了将klass转换为对象,我使用了toObject()这样的方法

canvas.toObject()

返回简单对象而不是klass对象。