-
Notifications
You must be signed in to change notification settings - Fork 21
/
iife.js
56 lines (46 loc) · 1.07 KB
/
iife.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
50
51
52
53
54
55
56
// Module Design Pattern
(function() {
// declare private variables and/or functions
return {
// declare public variables and/or functions
}
})();
const result = (function sum(a,b) {
return a + b;
})(1,2);
console.log(result);
const obj = (function () {
const sum = (a,b) => {
return a + b;
}
return {
sum
}
})();
console.log(obj.sum(2,3));
const moduleDesignPattern = (function () {
let privateVar = 1;
let publicVar = 12345;
function privateMethod() {
console.log(privateVar);
}
function publicMethod() {
publicVar += 1;
console.log(publicVar);
}
return {
publicMethod,
publicVar,
alterPrivateVarWithPublicMethod() {
privateVar += 2;
console.log(privateVar);
return privateVar;
},
};
})();
console.log(moduleDesignPattern.publicVar); // 12345
moduleDesignPattern.alterPrivateVarWithPublicMethod(); // 3
moduleDesignPattern.publicMethod(); // 12346
moduleDesignPattern.alterPrivateVarWithPublicMethod(); // 5
console.log(moduleDesignPattern.privateVar); // undefined
// myModule.privateMethod();