I can create a class that does not inherit from Object.prototype using the older syntax.
function Shape(x, y, width, height) {
this.x = x,
this.y = y,
this.width = width,
this.height = height;
}
Shape.prototype = Object.create(null, {
constructor: {
configurable: true,
writable: true,
value: Shape
},
move: {
configurable: true,
writable: true,
value: function (x, y) {
this.x += x,
this.y += y;
}
}
});
var rect = new Shape(0, 0, 4, 2);
console.log(Object.getPrototypeOf(rect) === Shape.prototype);
console.log(Object.getPrototypeOf(Object.getPrototypeOf(rect)) !== Object.prototype); //inheritance
How can I do this using ES6 classes?
class Shape {
constructor(x, y, width, height) {
this.x = x,
this.y = y,
this.width = width,
this.height = height;
}
move(x, y) {
this.x += x,
this.y += y;
}
}
var rect = new Shape(0, 0, 4, 2);
console.log(Object.getPrototypeOf(rect) === Shape.prototype);
console.log(Object.getPrototypeOf(Object.getPrototypeOf(rect)) === Object.prototype); // inheritance