javascript有助于解决这一挑战

javascript有助于解决这一挑战,javascript,algorithm,Javascript,Algorithm,我正在学习javascript,遇到了下面的挑战,但我不知道如何解决它。 我想让你的意见,知道如何得到以下结果根据这个声明 // DO NOT CHANGE CODE BELOW let increment1 = new Increment() let increment2 = Increment() console.log(increment1 == +increment2) // true console.log(`val: ${increment1}`) // val: 1 c

我正在学习javascript,遇到了下面的挑战,但我不知道如何解决它。 我想让你的意见,知道如何得到以下结果根据这个声明

// DO NOT CHANGE CODE BELOW
let increment1 = new Increment()
let increment2 = Increment()

console.log(increment1 == +increment2) // true
console.log(`val: ${increment1}`)      // val: 1
console.log(`val: ${increment1}`)      // val: 2
console.log(`val: ${increment1}`)      // val: 3

我已经尝试使用Prototype来解决问题。

在给定代码中需要观察的一些事情:

函数Increment是一个构造函数,因为它可以用new调用。因此,我们知道新增量返回的值不是一个像数字一样的原始值,而是一个对象

但是,也应该可以调用Increment而不使用新的。这意味着Increment不应假定这是已创建的对象,而应具有显式返回值的规定

通过使用一元+我们了解到对象可以强制为一个数字。因此,我们应该在对象中提供valueOf或toString方法。在后一种情况下,我们应该让toString返回一个有效数字表示的字符串

通过使用模板字符串,我们了解到可以将对象强制为字符串,生成1、2等。所以现在我们知道我们应该选择toString实现,而不是valueOf

从我们从打印的模板文本中看到的增量行为中,我们了解到我们需要一个数值变量,该变量在toString函数的范围内,但不是它的局部变量。最好的做法是在增量定义的范围内定义变量,而不是将其定义为全局变量,尽管这样也可以

综合所有信息,我们得出以下结论:

函数增量{ 让计数=0; 返回{ toString{return count++;} } } //不要更改下面的代码 让increment1=新的增量 设increment2=增量 console.logincrement1==+increment2//true console.log`val:${increment1}`//val:1 console.log`val:${increment1}`//val:2
console.log`val:${increment1}`//val:3到目前为止您尝试了什么?你可以再检查一下示例代码吗?我不知道你是否可以创建一个可以与new一起使用或不使用new的函数…我已经尝试使用闭包和prototype来解决问题,但我仍然没有找到解决方案。看起来需要你为Increment object/function.HINT的toString方法创建一个自定义函数-检查this.constructor.name是否有用。Increment.prototype.toString应该是一个自定义函数,用于更改此绑定变量的值。