Имена объектов (Object Namespaces)
Это простейший способ создать пространство имен. Вы создаете объект, в котором хранятся все ваши функции и переменные:
var MyApp = {};
MyApp.Utils = {
add: function(a, b) { return a + b; },
multiply: function(a, b) { return a * b; }
};
console.log(MyApp.Utils.add(2, 3)); // Output: 5IIFE (Immediately Invoked Function Expression)
Это анонимная функция, которая исполняется сразу после объявления. Внутри нее можно объявлять приватные переменные и функции, доступные только внутри этой функции:
(function () {
var privateVar = "I'm private";
window.MyApp = {
publicMethod: function() {
console.log(privateVar);
}
};
})();
MyApp.publicMethod(); // Output: I'm privateES Modules (ECMAScript Modules)
Начиная с ES6, появилась возможность использовать модули для организации кода. Это современное и чистое решение для изоляции кода и предотвращения конфликтов имен:
// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
// main.js
import { add, subtract } from './math.js';
console.log(add(2, 3)); // Output: 5
console.log(subtract(5, 2)); // Output: 3CommonJS Modules (Node.js)
В Node.js часто используется CommonJS-стиль модулей, где экспортируются объекты и функции с помощью exports или
module.exports:
// math.js
exports.add = function(a, b) { return a + b; };
exports.subtract = function(a, b) { return a - b; };
// main.js
const math = require('./math.js');
console.log(math.add(2, 3)); // Output: 5
console.log(math.subtract(5, 2)); // Output: 3JavaScript не имеет прямого аналога namespace, как в других языках, но с помощью объектов, модулей и функций можно эффективно изолировать и организовать код, предотвращая конфликты имен и создавая четкую структуру приложения.