📜  javascript 中间件 getter 和 setter - Javascript (1)

📅  最后修改于: 2023-12-03 15:16:09.519000             🧑  作者: Mango

JavaScript 中间件 getter 和 setter

在 JavaScript 中,我们可以使用 getter 和 setter 方法来控制对象属性的读取和更改。这些方法在中间件中非常有用,可以帮助我们在对象被读取或更改时执行一些自定义逻辑。

Getter 方法

一个 getter 方法是一个用于访问和返回对象属性值的函数,它被定义为对象属性的一部分,并按需执行。

示例

以下是一个简单的示例,展示如何使用 getter 方法:

const person = {
  firstName: 'John',
  lastName: 'Doe',
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

console.log(person.fullName); // "John Doe"

在这个示例中,我们定义了一个 person 对象,在其中定义了一个 fullName 的 getter 方法。当我们调用 person.fullName 时,getter 方法被调用,并返回了 "John Doe"。

Setter 方法

与 getter 方法相反,setter 方法用于设置对象属性的值。setter 方法被定义为对象属性的一部分,并按需执行。

示例

以下是一个简单的示例,展示如何使用 setter 方法:

const person = {
  firstName: 'John',
  lastName: 'Doe',
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  },
  set fullName(name) {
    const [firstName, lastName] = name.split(' ');
    this.firstName = firstName;
    this.lastName = lastName;
  }
}

person.fullName = 'Tom Smith';
console.log(person.firstName); // "Tom"
console.log(person.lastName); // "Smith"

在这个示例中,我们在 person 对象中定义了一个 fullName 属性,同时我们也定义了一个 fullName 的 setter 方法,它被调用,并将新的值 "Tom Smith" 分割为 "Tom" 和 "Smith",然后分别设置到 firstNamelastName 属性上。

中间件

在 Express 应用程序中,中间件是用于处理客户端请求和返回响应的函数。在 Express 中,我们可以使用 getter 和 setter 方法来创建自定义中间件。

示例

以下是一个简单的示例,展示如何创建一个中间件来记录请求和响应的日志:

const express = require('express');

const app = express();
const port = 3000;

// 使用 getter 和 setter 方法来记录请求和响应的日志
app.use((req, res, next) => {
  const start = Date.now();
  // getter 方法
  console.log(`[${start}] Incoming request from ${req.ip}`);
  // setter 方法
  res.on('finish', () => {
    const end = Date.now();
    const elapsed = end - start;
    console.log(`[${end}] Request handled in ${elapsed}ms`);
  });
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Server started on port ${port}`);
});

在这个示例中,我们创建了一个 Express 应用程序,并使用 use 方法添加了一个中间件。这个中间件使用 getter 和 setter 方法来记录请求和响应的日志。当请求到达时,getter 方法被调用,并记录请求时间和客户端 IP。当响应被发送时,setter 方法被调用,并记录响应时间和处理请求所需的时间。