gpt4 book ai didi

javascript - javascript中类的递归实现

转载 作者:行者123 更新时间:2023-11-30 13:54:29 25 4
gpt4 key购买 nike

我是 JS 新手我陷入了关于类的简单(?)问题

我需要做的就是将一些字符串放入代码中以使断言表达式有效

class Rec {
constructor() {
let a = 0;
this['put here'] = () => a+++a;
}
}

let inst = new Rec();
console.assert(
inst == 1 && inst == 3 && inst == 5
);

注意到这个类有无穷无尽的值(value)链,比如

__proto__:
constructor:
prototype:
constructor:
prototype:
...etc

所以我尝试使用 __proto__ 但得到了一个 Function.prototype.toString requires that 'this' be a Function 错误。

最佳答案

您可以使用 valueOftoString

class Rec {
constructor() {
let a = 0;
this['valueOf'] = () => a+++a;
}
}

let inst = new Rec();
console.log(
inst == 1 && inst == 3 && inst == 5
);

之所以可行,是因为对象 (inst) 和数字之间的抽象相等性比较

来自specification ,

为了比较x == y

  1. If Type(x) is Object and Type(y) is either String or Number, return the result of the comparison ToPrimitive(x) == y.

如果 hint 是 Number,则对象的 ToPrimitive 调用 valueOf 方法。

如果展开表达式,它看起来像这样:a++ + a。每次比较 inst 时,都会调用 valueOf 方法。并返回a++a之和。

关于javascript - javascript中类的递归实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com