En Node.js, uno de los mejores enfoques para encapsular datos es a través del uso de objetos y módulos.
Primero que todo, consideremos encapsulación en el sentido de la Programación Orientada a Objetos (POO):
```javascript
// creando una clase
class Auto {
constructor(marca, modelo) {
let _marca = marca;
let _modelo = modelo;
const miAuto = new Auto(‘Toyota’, ‘Corolla’);
console.log(miAuto.getMarca()); //output: ‘Toyota‘
console.log(miAuto.getModelo()); //output: ‘Corolla‘
```
En este ejemplo, `_marca` y `_modelo` están “encapsulados”. No puedes acceder a ellos directamente desde fuera de la clase. Solo puedes acceder a ellos a través de los métodos get.
La otra forma es usar módulos en Node.js. Un módulo es simplemente un archivo. Un script en Node.js puede acceder a las funciones y objetos de otro archivo utilizando la función `require()`.
Aquí un pequeño ejemplo de cómo usar módulos para encapsular datos:
`auto.js`:
```javascript
let marca = “Toyota”;
let modelo = “Corolla”;
let getMarca = function() {
return marca;
}
let getModelo = function() {
return modelo;
}
module.exports = { getMarca, getModelo }
```
`index.js`:
```javascript
let auto = require(‘./auto.js’);
console.log(auto.getMarca()); //output: ‘Toyota‘
console.log(auto.getModelo()); //output: ‘Corolla‘
```
En este ejemplo, `marca` y `modelo` están “encapsulados” en el módulo `auto.js`. Solo pueden accederse a través de los métodos expuestos por el módulo. En Node.js, esto se hace generalmente a través del objeto `module.exports` o `exports`, que es un objeto especial que se incluye en cada módulo.