String 是原始类型还是 Javascript 中的对象?

新手上路,请多包涵

String 是原始类型还是 Javascript 中的对象? Source 说 Undefined、Null、Boolean、Number 和 String 都是 Javascript 中的原始类型。但它说 String 也是一个对象。我很困惑。有人可以解释一下吗?

先感谢您 ;-)

原文由 Imran 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 280
1 个回答

实际上同样的答案适用于: 字符串、数字、布尔值。这些类型有它们的原始版本和对象版本,它们在应用程序运行时中被 强制 执行,在幕后(在您不知情的情况下)。

强迫

JavaScript 是弱类型的。这意味着每当您的代码想要使用无效数据类型执行操作(例如将字符串添加到数字)时,JavaScript 将尝试为这种情况找到最佳匹配。

如上所述,这种机制也称为 _强制_。

基元和属性

您会发现以下代码令人困惑:

 > "hello world".length
11

因为 "hello world" 是字符串文字,即 原始.我们知道 基元没有属性。一切正常。

那它是如何工作的呢?强制 - 原语被一个对象包裹(强制)只有一小部分时间,使用对象的属性并立即处理对象。

强制是双向的

所以基元是用它们的对象包装版本来铸造的——但它也可以反过来工作。考虑以下代码:

 > String("hello ") + String("world")
"hello world"

> Number(2) + 3
5

对象被向下转换为它们的原始版本以完成操作。

阅读 这个精彩的解释 以了解更多信息。

原文由 ducin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题