| 
		
			 Цитата: 
		
	 | 
	
		
for (var i = 0; i<params.length; i++) {
        if (i==0) this.x = params[0];
        if (i==1) this.y = params[1];
        if (i==2) this.z = params[2];
        if (i==3) this.middle = params[3];
        if (i==4) this.summa = params[4];
    }
	 | 
	
 Это можно упростить до...
this.x = params[0];
        this.y = params[1];
        this.z = params[2];
        this.middle = params[3];
        this.summa = params[4];
 если аргумент конструктора вместо (params) записать так ([x, y, z, middle, summa]), то можно...
this.x = x;
        this.y = y;
        this.z = z;
        this.middle = middle;
        this.summa = summa;
 или так...
Object.assign(this, { x, y, z, middle, summa });
	
	| 
		
			 Цитата: 
		
	 | 
	
		
this.GeometricMean = function(){this.middle = (this.x+this.y+this.z)/3;}
	 | 
	
 Вы объявили как собственное свойство каждого экземпляра Numbers, лучше его наследовать.
	
	| 
		
			 Цитата: 
		
	 | 
	
		
Numbers.prototype = new Numbers(this.x = 0, this.y = 0, this.z = 0, this.middle = 0, this.summa = 0);
 
	 | 
	
 У вас получилась такая цепочка наследования... Numbers → Numbers → Object, а вам нужно Numbers → Object 
Numbers.prototype = {};
 Ваши this.x = 0 и т. д. создают глобальные переменные, поскольку this в том контексте указывает на глобальный объект.
И зачем вам передавать в конструктор параметры, которые вы всё равно перезапишите?  
function Numbers(x, y, z) {
	if(![x,y,z].every(Number.isFinite)) throw new Error("x, y, or z is not a number");
	Object.assign(this, { x, y, z });
}
Numbers.prototype = {
	constructor: Numbers,
	get mean() {
		return this.sum / 3;
	},
	get sum() {
		return this.x + this.y + this.z;
	}
};
function Numbers2(a, b, c) {
	if(![a,b,c].every(Number.isFinite)) throw new Error("a, b or c is not a number");
	this.__proto__.__proto__.constructor.apply(this, arguments); // super(...arguments);
	Object.assign(this, { a, b, c });
}
Numbers2.prototype = {
	__proto__: Numbers.prototype,
	constructor: Numbers2,
	get product() {
		return this.a * this.b + this.b * this.c;
	}
};
var numbers = new Numbers(12.1, 10.5, 20.0);
var chisla = new Numbers2(7.7, 8.5, 9.2);
	
	| 
		
			Сообщение от ProgYoung
			
		
	 | 
	| 
		А если я просто переименую this.Product в this.getProduct, это будет считаться частным свойством?
	 | 
	
Нет, вы просто поменяете имя свойства!