UNPKG

wat

Version:

Community-controlled cheat sheets for every coder.

52 lines (40 loc) 1.58 kB
## .create(proto[, propertiesObject]) Creates a new object with the specified prototype object and properties. Below is an example of how to use `Object.create()` to achieve classical inheritance. This is for single inheritance, which is all that JavaScript supports. ```js // Shape - superclass function Shape() { this.x = 0; this.y = 0; } // superclass method Shape.prototype.move = function(x, y) { this.x += x; this.y += y; console.info('Shape moved.'); }; // Rectangle - subclass function Rectangle() { Shape.call(this); // call super constructor. } // subclass extends superclass Rectangle.prototype = Object.create(Shape.prototype); Rectangle.prototype.constructor = Rectangle; var rect = new Rectangle(); console.log('Is rect an instance of Rectangle? ' + (rect instanceof Rectangle)); // true console.log('Is rect an instance of Shape? ' + (rect instanceof Shape)); // true rect.move(1, 1); // Outputs, 'Shape moved.' ``` If you wish to inherit from multiple objects, then mixins are a possibility. ```js function MyClass() { SuperClass.call(this); OtherSuperClass.call(this); } MyClass.prototype = Object.create(SuperClass.prototype); // inherit mixin(MyClass.prototype, OtherSuperClass.prototype); // mixin MyClass.prototype.myMethod = function() { // do a thing }; ``` The mixin function would copy the functions from the superclass prototype to the subclass prototype, the mixin function needs to be supplied by the user. An example of a mixin like function would be jQuery.extend().