function Module (price, unitPrice, description) {
     return {
        desc: description,
        price: Number(price),
        unitPrice: unitPrice, //Czy to nie przeszkadza, że jest ta sama nazwa?
        weight: decode(description), // Nie widzi mi funkcji "decode" która jest w prototypie obiektu :(
        correct: false
    };
}

Module.prototype = {
    constructor: Module,
    
    toString: function() {
        return "Opis: " + this.desc + ", Cena: " + this.price + ", waga: " + this.weight[0].toString();
    },
    
    check: function() {
        (this.price * 1e3 / this.weight).toFixed(2) == this.unitPrice ? this.correct = true : this.correct = false;
    },
    decode: function(string) {
      var result = string.match(/(\d\d?\d?,?\d?\d?(?=\s(g|ml)))/g);
      return onEach(result, Number);
   }
  }

Cześć, dopiero zacząłem uczyć się JS - a jestem już starym koniem - więc nie wchodzi to tak jak bym chciał ;/
zawsze tworzyłem nowy obiekt przez:

var m = new Module (11.99, 6.00, "Sok 400 ml");

Teraz chciałbym spróbować utworzyć obiekt bez słowa "new". - robie to w ten sposob

var m = Module (11.99, 6.00, "Sok 400 ml");

Nie wiem czy w ogóle dobrze,
bo pierwszy raz stosuje składnie:

function Nazwa () {
  return {
    key1: value,
    key2: value
}
}

Czy ta forma stworzenia konstruktora nazywa - się literalnym podejsciem ?

główne pytanie:
zgłasza mi "decode is not a function"

próbowałem jeszcze

weight: this.decode(description), //Array

ale nie pomogło.... :(