Skip to content

输出什么?

Posted on:2023年12月18日 at 20:43
class Counter {
  constructor() {
    this.count = 0;
  }

  increment() {
    this.count++;
  }
}

const counterOne = new Counter();
counterOne.increment();
counterOne.increment();

const counterTwo = counterOne;
counterTwo.increment();

console.log(counterOne.count);

输出是 3

在这段代码中,我们定义了一个名为 Counter 的类,它具有一个 count 属性和一个 increment 方法。当我们创建一个 counterOne 实例时,它的 count 属性被初始化为 0

然后,我们通过调用 counterOne.increment() 两次来增加 counterOne 对象的 count 值,使其变为 2

接下来,我们将 counterOne 赋值给 counterTwo,这实际上是将对同一个对象的引用赋值给了另一个变量。因此,counterTwocounterOne 引用相同的对象。

然后,我们调用 counterTwo.increment(),这会导致 count 属性再次增加 1,所以最终 counterOne.count 的值为 3

由于 counterOnecounterTwo 都引用同一个对象,因此无论通过哪个引用来修改属性,都会反映在该对象上。

原文转自:https://fe.ecool.fun/topic/b752b91f-930f-43b6-8017-83d56392dc7e