【问题标题】:Call method directly on number [duplicate]直接在号码上调用方法[重复]
【发布时间】:2019-03-23 05:00:28
【问题描述】:

我最近实现了一个非常简单的方法来扩展基本 JavaScript Number 类,并尝试直接在浏览器控制台中输入的数字上调用它。

123.myMethod();

但它没有按预期工作,它只说:“无效或意外令牌”

我不确定是否可以直接在输入的数字上调用数字方法,所以我尝试了标准方法,例如 .toFixed():

123.toFixed(1);

但这也行不通。

只有写浮点数,才能调用 Number 方法:

123.0.toFixed(1);

如果我将整数放在括号内,它也可以:

(123).toFixed(1);

所以我的问题是: 为什么整数没有隐式转换为 Number,为什么我不能对它们使用 Number 方法?

【问题讨论】:

    标签: javascript oop methods


    【解决方案1】:

    . 告诉 JavaScript 解释器是小数点,所以它期待更多的数字。在 JavaScript 中只有浮点数,没有整数。

    【讨论】:

    • 嗯...我想我会选择 (123).myMethod() 然后像 parseInt(123).myMethod() 这样显式转换看起来有点难看 ;-)
    • parseInt(123) 不是“显式铸造”任何东西。首先是解析。它会将您提供的任何内容转换为 string ,然后逐个字符地读取它以提取数值。你得到的是通常完全相同的数字,但非常大的数字可能会被破坏。此外,您仍然可以从中获得原始数据,您没有获得 Number 对象。为此,您需要使用new Number(123),但要注意new Number(123) !== new Number(123),因为它们是不同的对象primitiveNumber.myMethod() 也可以在您将隐式转换为对象时起作用。
    猜你喜欢
    • 2014-07-19
    • 2012-02-05
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多