-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathencapsulation.js
94 lines (75 loc) · 1.86 KB
/
encapsulation.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Encapsulation:
console.log('-- Encapsulation:');
function User (name, age) {
this.name = name;
let userAge = age;
this.getAge = () => {
return userAge;
};
this.setAge = (age) => {
if (typeof age === 'number' && age > 0 && age < 110) {
userAge = age;
} else {
console.error('Value for age is invalid');
}
};
this.say = () => {
console.log(`Username is ${this.name}, age: ${this.getAge()}`);
};
}
let user = new User('Tee', 36);
console.log(user.name);
console.log(user.userAge);
user.say();
console.log(user.getAge());
// test the validitu of value:
user.setAge('37');
console.log(user.getAge());
user.setAge(237);
console.log(user.getAge());
// set & get new value:
user.setAge(37);
console.log(user.getAge());
//// Without encapsulation any data can be easily changed later by user:
// user.age = '-37y';
// user.name = 'T.';
// console.log(user.name); // 'T.'
// console.log(user.age); // '-37'
// user.say();
// Modules:
console.log('-- Modules:');
// 1) Anonymous function expression:
let number = 1;
(function() {
let number = 2;
console.log(number);
return console.log(number + 3);
}());
console.log(number);
// 2) Using object interface:
let mod = (function() {
let private = function() {
console.log('You shouldn\'t see me! I\'m private.');
};
return {
sayHello: function() {
console.log('Hello!');
}
};
}());
console.log(mod);
console.log(mod.sayHello());
// 2) Creating private (local) methods:
let pod = (function() {
let private = function() {
console.log('You shouldn\'t see me! I\'m private.');
};
let sayHello = function() {
console.log('Hello!');
};
return {
sayHello: sayHello
};
}());
console.log(pod);
console.log(pod.sayHello());