Skip to content

Commit c713bc2

Browse files
committed
Use private members
1 parent 75c6c21 commit c713bc2

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,46 @@ bankAccount.withdraw(100);
677677
**[⬆ back to top](#table-of-contents)**
678678

679679

680+
### Make objects have private members
681+
This can be accomplished through closures (for ES5 and below).
682+
683+
**Bad:**
684+
```javascript
685+
686+
var Employee = function(name) {
687+
this.name = name;
688+
}
689+
690+
Employee.prototype.getName = function() {
691+
return this.name;
692+
}
693+
694+
var employee = new Employee('John Doe');
695+
console.log('Employee name: ' + employee.getName()); // Employee name: John Doe
696+
delete employee.name;
697+
console.log('Employee name: ' + employee.getName()); // Employee name: undefined
698+
```
699+
700+
**Good**:
701+
```javascript
702+
var Employee = (function() {
703+
function Employee(name) {
704+
this.getName = function() {
705+
return name;
706+
};
707+
}
708+
709+
return Employee;
710+
}());
711+
712+
var employee = new Employee('John Doe');
713+
console.log('Employee name: ' + employee.getName()); // Employee name: John Doe
714+
delete employee.name;
715+
console.log('Employee name: ' + employee.getName()); // Employee name: John Doe
716+
```
717+
**[⬆ back to top](#table-of-contents)**
718+
719+
680720
## **Classes**
681721
### Classes should obey Single Responsibility Principle (SRP)
682722
As stated in Clean Code, "There should never be more than one reason for a class

0 commit comments

Comments
 (0)