如何在不调用 Javascript 中函数的任何方法或属性的情况下仅使用类/函数的对象递增计数器



在下面的代码中,

let increment = new Increment();

我要用Javascript编写一个类/函数Increment,这样

console.log(`${increment}`)//输出为1

console.log(`${increment}`);//输出为2

console.log(`${increment}`);//输出为3

console.log(`${increment}`);//输出为4

increment不能是一个函数,即我不能执行increment(),也不能是用于该目的的属性,即我无法执行increment.count

所以,整个问题看起来是这样的,


let increment = new Increment();
console.log(`${increment}`); //1
console.log(`${increment}`); //2
console.log(`${increment}`); //3
console.log(`${increment}`); //4

并且我应该实现函数CCD_ 10以获得期望的输出。

您可以定义一个带有私有字段的类,并覆盖toString()方法,使其递增并返回该私有字段,请尝试:

class Increment{
constructor(){
this.i = 1;
}

toString(){
return this.i++;
}
}
let increment = new Increment();
console.log(`${increment}`);
console.log(`${increment}`);
console.log(`${increment}`);
console.log(`${increment}`);

功能类似的方法:

function Increment(){
let i = 1;
return { toString: () => i++ }
}
let increment = new Increment();
console.log(`${increment}`);
console.log(`${increment}`);
console.log(`${increment}`);
console.log(`${increment}`);

最新更新