А зачем вам объект «окружность»? Что вы с ним потом собираетесь делать, ради чего здесь он создаётся? Может проще написать просто какой-нибудь «хелпер»:
helpers.circle = function (context, x, y, radius, color) {
context.arc(x, y, radius, startDegrees, endDegrees, counterClockwise);
context.fillStyle = color;
context.fill();
}
Ну или завести объект «рисовальщик», хранящий ссылку на графический контекст и настройки рисования, и имеющий необходимые методы (вроде приведённого выше) для работы с этим контекстом:
function Painter(context, defaultColor) {
this.context = context;
this.defaultColor = defaultColor;
this.circle = function (x, y, r, color) {
if (color === undefined) {
color = this.defaultColor;
}
this.context.arc(x, .... // code
}
}
Это если вам нужно наследование. Объекты по-моему имеет смысл создавать только для реально существующих инстансов (спрайты, например, от которых наследуются игровые объекты и персонажи). Если окружность — это динамический объект, тогда можно уже думать и крутить, в зависимости от архитектуры графики, например так:
function Circle(x, y, r, color) {
this.x = x;
this.y = y;
this.r = r;
this.color = color;
this.render = function (context) {
context.arc(this.x, ...
}
}