在JavaScript中,如果“;字符串是对象”;那为什么数字不也一样呢?

在JavaScript中,如果“;字符串是对象”;那为什么数字不也一样呢?,javascript,Javascript,你能行 "a".charAt(0); 如果你能做到: 42.isMeaningOfLife(); 嗯,或者更确切地说是更实用的东西,比如 myNumber.round(); 当然,我想到的第一件事是,这将是一个性能猪,但显然这不是JS编译器的工作方式。选中此项: 请注意,JavaScript区分字符串对象和 基本字符串值。(布尔和数字也是如此。) 字符串文字(用双引号或单引号表示)和字符串 从非构造函数上下文中的字符串调用返回(即,没有 使用新关键字)是基本字符串。自动JavaScript

你能行

"a".charAt(0);
如果你能做到:

42.isMeaningOfLife();
嗯,或者更确切地说是更实用的东西,比如

myNumber.round();
当然,我想到的第一件事是,这将是一个性能猪,但显然这不是JS编译器的工作方式。选中此项:

请注意,JavaScript区分字符串对象和 基本字符串值。(布尔和数字也是如此。)

字符串文字(用双引号或单引号表示)和字符串 从非构造函数上下文中的字符串调用返回(即,没有 使用新关键字)是基本字符串。自动JavaScript 将基本体转换为字符串对象,以便可以使用 基本字符串的字符串对象方法。在 方法将在基元字符串或属性查找上调用 发生时,JavaScript将自动包装字符串原语并 调用该方法或执行属性查找


我相信这是一个支持语法的简单问题。对字符串和数字执行对象操作时,它们都被包装在各自的对象包装器(
String
Number
)中

您可以
(42).isMeaningOfLife()
Number.prototype.isTheMeaningOfLife = function () {
    return this.valueOf() === 42;
};

(42).isTheMeaningOfLife(); //true
42.0.isTheMeaningOfLife(); //true