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

时间:2014-02-06 13:14:21

标签: javascript

你可以做到

"a".charAt(0);

如果能做的话,那会不会很好:

42.isMeaningOfLife();

嗯,或者说更实用的东西,比如

myNumber.round();

当然,我想到的第一件事就是这将是一场表现难,但显然这不是JS编译器的工作原理。检查此MDN article on JS strings

  

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

     

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

1 个答案:

答案 0 :(得分:4)

我认为支持语法很简单。在对它们执行对象操作时,字符串和数字都包装在各自的对象包装器(StringNumber)中。

Number.prototype.isTheMeaningOfLife = function () {
    return this.valueOf() === 42;
};

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