javascript帮助解决挑战



我正在学习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调用。因此,我们知道new Increment返回的值不是一个基元值(像数字一样(,而是一个对象。
  • 但是也应该可以在没有new的情况下调用Increment。这意味着Increment不应假定this是创建的对象,而应具有显式返回值的规定。

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

  • 从模板字符串的使用中,我们了解到对象可以被强制为字符串,从而产生"字符串";1〃"2〃。。。所以现在我们知道我们应该选择CCD_ 12而不是CCD_。

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

  • 把所有信息放在一起,我们得到了这个:

    function Increment() {
    let count = 0;
    return {
    toString() { return count++; }
    }
    }
    
    // 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

    最新更新