Не могу прочитать свойство 'множество' из неопределенного в JavaScript - PullRequest
0 голосов
/ 07 ноября 2019

Я использую fabric 3.4 для создания элемента canvas, который дает klass объект.

Скажем, у меня есть переменная 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

Когда я консоль журнала a и b. 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 голосов
/ 14 ноября 2019

Я решил это, вызвав toObject() метод фабрики.

Раньше я использовал фабрику 1.x и проходил реконструкцию проекта. После обновления Fabric до 3.x я столкнулся с этой проблемой. При создании тканевого холста возвращается объект типа klass.

const canvas = new fabric.Canvas();

Чтобы преобразовать klass в объект, я использовал метод toObject(), такой как

canvas.toObject()

который возвращает простой объект, а не объект klass.

...