Setting the globalCompositeOperation of the context will cause that
operation mode to be used when drawing. The options can all be seen on
MDN.
In this example, a subclassed circle with
globalCompositeOperation = 'destination-out' is used to act as an
"eraser".
The only argument to the draw function is the 2d context, and modifying
the globalCompositeOperation before invoking
super.draw will modify the context for the duration of the
Circle's draw.
When you click or tap the canvas, the circle's
globalCompositeOperation becomes destination-in, and will
act as whatever the opposite of an eraser is.