Here’s a circle mixin modeled after that style:var Circle = function() {}; Circle.prototype = { area: function() { return Math.PI * this.radius * this.radius; }, grow: function() { this.radius++; }, shrink: function() { this.radius--; } };In practice, however, such a heavyweight mixin is unnecessary. A simple object literal will suffice:var circleFns = { area: function() { return Math.PI * this.radius * this.radius; }, grow: function() { this.radius++; }, shrink: function() { this.radius--; } };the extend functionAnd how does such a mixin object get mixed into your object? Usually extend simply copies (not clones) the mixin’s functions into the receiving object. Functional MixinsIf the functions defined by mixins are intended solely for the use of other objects, why bother creating mixins as regular objects at all? var asCircle = function() { this.area = function() { return Math.PI * this.radius * this.radius; }; this.grow = function() { this.radius++; }; this.shrink = function() { this.radius--; }; return this; }; var Circle = function(radius) { this.radius = radius; }; asCircle.call(Circle.prototype); var circle1 = new Circle(5); circle1.area(); //78.54This approach feels right.