在 JavaScript 中,Proxy
和模块系统(ESM 和 CommonJS)是两个重要的特性。以下是对它们的简要介绍:
1. Proxy 对象
Proxy
对象用于创建一个对象的代理,能够定义自定义行为来处理对目标对象的操作(如属性访问、赋值、函数调用等)。这是 ES6 引入的一项特性。
示例:
javascript代码
let target = { message: 'Hello, world!' };
let handler = { get: function(target, prop, receiver) {
if (prop === 'message')
{ return 'This is a proxy!'; }
return Reflect.get(...arguments); }
};
let proxy = new Proxy(target, handler);
console.log(proxy.message);
// 输出:This is a proxy!
2. 模块系统
JavaScript 中的模块系统有两种主要的格式:ESM(ECMAScript Modules)和 CommonJS。
ESM (ECMAScript Modules)
ESM 是 ES6 引入的模块系统,使用 import
和 export
语法。
示例:
导出(math.js
):
javascript代码
export function add(x, y) { return x + y; }
导入(main.js
):
javascript代码
import { add } from './math.js';
console.log(add(2, 3)); // 输出:5
CommonJS
CommonJS 是 Node.js 中使用的模块系统,使用 require
和 module.exports
语法。
示例:
导出(math.js
):
javascript代码
function add(x, y) { return x + y; }
module.exports = { add };
导入(main.js
):
javascript代码
const { add } = require('./math');
console.log(add(2, 3)); // 输出:5
总结
- Proxy 对象允许自定义对目标对象的操作,提供强大的对象控制能力。
- ESM 和 CommonJS 是两种不同的模块系统,前者用于浏览器和现代 JavaScript 环境,后者主要用于 Node.js。