-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path04objectFactory.js
49 lines (45 loc) · 1.24 KB
/
04objectFactory.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function factory(lib, ordersArray) {
let myArr = [];
for (let obj of ordersArray) {
let resultObject = {};
let key = Object.keys(obj.template);
resultObject[key] = obj['template'][key];
for (let part of obj.parts) {
resultObject[part] = lib[part];
}
myArr.push(resultObject);
}
return myArr; // seems more clean now xdd
} // 100/100 works just fine
// What is called an 'input':
const library = {
print: function () {
console.log(`${this.name} is printing a page`);
},
scan: function () {
console.log(`${this.name} is scanning a document`);
},
play: function (artist, track) {
console.log(`${this.name} is playing '${track}' by ${artist}`);
},
};
const orders = [
{
template: { name: 'ACME Printer'},
parts: ['print']
},
{
template: { name: 'Initech Scanner'},
parts: ['scan']
},
{
template: { name: 'ComTron Copier'},
parts: ['scan', 'print']
},
{
template: { name: 'BoomBox Stereo'},
parts: ['play']
}
];
const products = factory(library, orders);
products[0].print();