parent
c402fdae07
commit
a55645a96b
@ -0,0 +1,89 @@
|
|||||||
|
# Modular Patterns:
|
||||||
|
|
||||||
|
## Douglas Crockford Style
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const Car = (name) => {
|
||||||
|
//private vars
|
||||||
|
let gas = 100;
|
||||||
|
const self = {}
|
||||||
|
|
||||||
|
//private method
|
||||||
|
const useGas = (amount) => {
|
||||||
|
gas -= amount
|
||||||
|
}
|
||||||
|
|
||||||
|
//public var
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
//public methods
|
||||||
|
self.drive = (distance)=>{
|
||||||
|
useGas(distance/5)
|
||||||
|
}
|
||||||
|
self.getGasLevel = ()=>{
|
||||||
|
return gas
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
};
|
||||||
|
|
||||||
|
const myCar = Car("Awesome Car");
|
||||||
|
console.log(myCar.getGasLevel())
|
||||||
|
myCar.drive(10)
|
||||||
|
console.log(myCar.getGasLevel())
|
||||||
|
```
|
||||||
|
|
||||||
|
## MDN Style
|
||||||
|
|
||||||
|
```JavaScript
|
||||||
|
const Car = function(name) {
|
||||||
|
//private var
|
||||||
|
let gas = 100;
|
||||||
|
|
||||||
|
//private method
|
||||||
|
const useGas = (amount) => {
|
||||||
|
gas -= amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public methods
|
||||||
|
this.drive = (distance) =>{
|
||||||
|
useGas(distance/5);
|
||||||
|
}
|
||||||
|
this.getGasLevel = () => {
|
||||||
|
return gas;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const myCar = new Car("Awesome Car");
|
||||||
|
console.log(myCar.getGasLevel())
|
||||||
|
myCar.drive(10)
|
||||||
|
console.log(myCar.getGasLevel())
|
||||||
|
```
|
||||||
|
|
||||||
|
## ES6 Class
|
||||||
|
|
||||||
|
This one is different, because basically everything is public, but some stuff can be hidden upon creation
|
||||||
|
|
||||||
|
```JavaScript
|
||||||
|
class Car {
|
||||||
|
constructor(){
|
||||||
|
//private vars
|
||||||
|
this.gas = 100;
|
||||||
|
this.useGas = (amount) => {
|
||||||
|
this.gas -= amount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//public methods
|
||||||
|
drive(distance){
|
||||||
|
this.useGas(distance/5)
|
||||||
|
}
|
||||||
|
getGasLevel(){
|
||||||
|
return this.gas;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const myCar = new Car("Awesome Car");
|
||||||
|
console.log(myCar.getGasLevel())
|
||||||
|
myCar.drive(10);
|
||||||
|
console.log(myCar.getGasLevel())
|
||||||
|
```
|
||||||
Loading…
Reference in new issue