class PointClass {
constructor(x, y){
this.x = x;
this.y = y;
}
add(point){
return new PointClass(this.x + point.x, this.y + point.y);
}
sub(point){
return new PointClass(this.x - point.x, this.y - point.y);
}
}
function PointProto(x, y){
this.x = x;
this.y = y;
}
PointProto.prototype.add = function(point){
return new PointProto(this.x + point.x, this.y + point.y);
}
PointProto.prototype.sub = function(point){
return new PointProto(this.x - point.x, this.y - point.y);
}
function PointFactory(x, y){
return {
x,
y,
add: (point)=>PointFactory(this.x + point.x, this.y + point.y),
sub: (point)=>PointFactory(this.x - point.x, this.y - point.y)
}
}
window.PointClass = PointClass
window.PointProto = PointProto
window.PointFactory = PointFactory
window.num = 10_000