Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Khai báo Namespace trong JavaScript


JavaScript dùng từ khóa var (hoặc const/let hiện đại) để khai báo namespace. Cách phổ biến: Object Literal làm namespace container.

Cú pháp cơ bản

var myNamespace = {
  functionOne: function() { ... },
  functionTwo: function() { ... }
};

// Gọi
myNamespace.functionOne();

Pattern nâng cao: IIFE Module Pattern

const MyModule = (function() {
  // Private variables/functions
  let privateVar = 0;
  function privateHelper() { ... }
  
  // Public API
  return {
    publicMethod() { ... },
    publicProperty: 42
  };
})();

MyModule.publicMethod(); // Access public
// privateVar không truy cập được từ ngoài

ES Modules (Modern Standard - ES2015+)

// math.js (module)
export const PI = 3.14159;
export function add(a, b) { return a + b; }
export default function multiply(a, b) { return a * b; }

// app.js
import multiply, { PI, add } from './math.js';
console.log(add(PI, 1));

Namespace Pattern cho Legacy/Global Scripts

// Tránh global pollution
var MyApp = MyApp || {};

MyApp.Utils = MyApp.Utils || {};
MyApp.Utils.formatDate = function(date) { ... };

MyApp.Models = MyApp.Models || {};
MyApp.Models.User = class { ... };

Best Practice

  • ES Modules cho project hiện đại (build tool: Vite, Webpack, Rollup).
  • IIFE Module Pattern cho script global không build step.
  • Tránh var global - dùng const namespace object.
  • Dùng Object.freeze() cho namespace constants.