function Article() { this.name = ""; this.dimension = ""; this.content = { size : 0, price: 0 }; this.portion = { size : 0, price : 0, type : "" }; } Article.prototype = { get Name() { return this.name; }, set Name(value) { this.name = value; }, get ContentSize() { return this.content.size; }, set ContentSize(value) { this.content.size = value; }, get Dimension() { return this.dimension; }, set Dimension(value) { this.dimension = value; }, get PortionSize() { return this.portion.size; }, set PortionSize(value) { this.portion.size = value; }, get PortionType() { return this.portion.type; }, set PortionType(value) { this.portion.type = value; }, get PortionPrice() { return this.portion.price; }, set PortionPrice(value) { this.portion.price = value; }, get ContentPrice() { return this.Portions * this.portion.price; }, get Portions() { return this.content.size / (this.portion.size || 1); } }; Article.thaw = function (json) { var article = new Article(); article.id = json.id; article.Name = json.name; article.Dimension = json.dimension; article.ContentSize = json.content.size; article.PortionPrice = json.portion.price; article.PortionSize = json.portion.size; article.PortionType = json.portion.type; return article; };