试图创造这个有人可以帮忙吗?

问题描述

有人可以协助以下查询吗?

在 JavaScript 中,定义一个函数 makeCounter,它接受​​一个定义初始值 start 的可选参数,认值为 0。该函数应返回一个包含定义 3 个方法的键的对象: - value 返回计数器的当前值 - increment 将计数器的值加 1 并返回新值 - decrement 将计数器的值减 1 并返回新值

The returned object should not allow direct modification or retrieval of the value.


Example usage:

var counter = makeCounter();
console.log(counter.value());
// 0

var counter2 = makeCounter(4);

console.log(counter2.value());
// 4

console.log(counter2.increment());
// 5
console.log(counter2.value());
// 5

counter2.decrement();
counter2.decrement();
console.log(counter2.decrement());
// 2

解决方法

我建议不要使用函数 makeCounter(),而是只使用 new 运算符。 # 类字段的 value 前缀使其成为私有。

class Counter {
  #value
  constructor(value = 0) {
    this.#value = value;
  }
  value() {
    return this.#value;
  }
  increment() {
    this.#value++;
  }
  decrement() {
    this.#value--;
  }
}

let counter = new Counter(3);
console.log(counter.value());
counter.increment();
console.log(counter.value());