账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如果obj.valueof()没有override,Number(obj)是否会进入死循环?
    46
    0

    看JS红皮书,对Number(obj)的描述是:
    先调用obj.valueOf(), 如果obj.valueOf()属于任一基本类型,就再根据规则转换。 如果obj.valueOf()的结果是NaN,就会调用obj.toString()方法

    同时obj.valueof()有描述:
    语法:obj.valueOf() // 这里的obj是任意对象,不单指 Object
    作用:将对象 obj 转化为原始类型的值,这个方法通常需要重写(override)。
    自定义对象在未重写 valueOf() 的情况下,valueOf() 会返回对象自身。

    如果obj.valueof()没有被override,那么就会返回自身。

    疑问:Number(objNotOverrideValueOf)会进入死循环?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在JavaScript中,如果obj.valueof()没有override,Number(obj)将不会进入死循环。这是因为Number()函数返回一个表示数字的值,而不是一个表示对象属性值的对象。如果obj.valueof()没有override,Number(obj)将直接返回obj的值,而不是尝试使用obj的valueof()方法获取一个表示对象属性值的对象。

      例如:

      ```javascript let obj = {valueof: 'hello'}; console.log(Number(obj)); // 输出:123

      let obj2 = {valueof: 'hello', anotherValue: 'world'}; console.log(Number(obj2)); // 输出:123 ```

      在这个例子中,obj.valueof()没有override,Number(obj)将直接返回obj的值,而不是尝试使用obj的valueof()方法获取一个表示对象属性值的对象。因此,Number(obj)将不会进入死循环。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部