Test name | Executions per second |
---|---|
ES6 Class | 755218.4 Ops/sec |
Function Prototype with longer chain | 526179.1 Ops/sec |
Object Literal | 1490133.5 Ops/sec |
class Point {
constructor(x, y){
this.x = x;
this.y = y;
}
add(point){
return new Point(this.x + point.x, this.y + point.y);
}
sub(point){
return new Point(this.x - point.x, this.y - point.y);
}
}
var p1 = new Point(10, 10);
var p2 = new Point(10, -10);
var sum = p1.add(p2);
var dif = p1.sub(p2);
function Point(x, y){
this.x = x;
this.y = y;
}
const pointParent = {
add(point) {
return new Point(this.x + point.x, this.y + point.y);
}
};
const pointParentParent = {
sub(point) {
return new Point(this.x + point.x, this.y + point.y);
}
};
Object.setPrototypeOf(pointParent, pointParentParent);
Point.prototype = pointParent;
var p1 = new Point(10, 10);
var p2 = new Point(10, -10);
var sum = p1.add(p2);
var dif = p1.sub(p2);
function Point(x, y){
return {
x,
y,
add: (point)=>Point(this.x + point.x, this.y + point.y),
sub: (point)=>Point(this.x - point.x, this.y - point.y)
}
}
var p1 = Point(10, 10);
var p2 = Point(10, -10);
var sum = p1.add(p2);
var dif = p1.sub(p2);