canvas, это лишь отображение, на канве нельзя хранить какие-нибудь не визуальные данные. Поэтому просто делаете обычные JS объекты, реализуете им метод draw, и в методе рисования, проходитесь по каждому такому объекту (например из массива), и вызываете им их метод draw для вашей канвы. Таким образом, у вас есть определенная сущность, объект, который рисуется на канве, который имеет определенные данные (координаты, размеры, цвет), и их можно менять, и изменения будут перерисованы при следующем вызове draw
UPD: я обычно вот так делаю
https://jsfiddle.net/3bhr2ygz/8/ теперь у вас есть массив объектов objects, и каждый объект при изменении отображает изменения на канве.