Как добавить свойство ко всем объектам fabricjs?

#javascript #fabricjs

#javascript #fabricjs

Вопрос:

Мне нужно использовать дополнительные свойства для объектов формы, таких как круг, многоугольник, линия, прямоугольник, … и вместо того, чтобы добавлять их вручную к самому объекту, я бы хотел добавить их глобально ко всем объектам.

Я просмотрел некоторые другие ответы SO, но они всегда относились к одному конкретному объекту, а не ко всем объектам (или ко всем объектам shape).

Кто-нибудь знает, достижимо ли это вообще, и если да, то как?

Комментарии:

1. Что-то вроде canvas.getObjects().forEach( (obj) => { obj.set("field", value); } ) ? Вы также можете добавить filter туда a, если вам нужен только определенный тип объекта.

2. Это моя текущая реализация, но я хочу что-то надежное, которое устанавливает их глобально и забывает о них.

Ответ №1:

Добавьте следующую строку в свой код.

 fabric.Object.prototype.set("field", "value"); 

// field: the property you want to set for all types of objects
// value: the value you want to set that field for all types of objects
 

Вы можете получить доступ к этому свойству в других объектах. например, прямоугольник, Круг, изображение…

 fabric.Object.prototype.Rect.field
// It returns "value"
 

Комментарии:

1. Еще не тестировал его, но приму его, как только вернусь к нему снова, спасибо за ответ!