String 是原始类型还是 Javascript 中的对象? Source 说 Undefined、Null、Boolean、Number 和 String 都是 Javascript 中的原始类型。但它说 String 也是一个对象。我很困惑。有人可以解释一下吗?
先感谢您 ;-)
原文由 Imran 发布,翻译遵循 CC BY-SA 4.0 许可协议
String 是原始类型还是 Javascript 中的对象? Source 说 Undefined、Null、Boolean、Number 和 String 都是 Javascript 中的原始类型。但它说 String 也是一个对象。我很困惑。有人可以解释一下吗?
先感谢您 ;-)
原文由 Imran 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
实际上同样的答案适用于: 字符串、数字、布尔值。这些类型有它们的原始版本和对象版本,它们在应用程序运行时中被 强制 执行,在幕后(在您不知情的情况下)。
强迫
JavaScript 是弱类型的。这意味着每当您的代码想要使用无效数据类型执行操作(例如将字符串添加到数字)时,JavaScript 将尝试为这种情况找到最佳匹配。
如上所述,这种机制也称为 _强制_。
基元和属性
您会发现以下代码令人困惑:
因为
"hello world"
是字符串文字,即 原始.我们知道 基元没有属性。一切正常。那它是如何工作的呢?强制 - 原语被一个对象包裹(强制)只有一小部分时间,使用对象的属性并立即处理对象。
强制是双向的
所以基元是用它们的对象包装版本来铸造的——但它也可以反过来工作。考虑以下代码:
对象被向下转换为它们的原始版本以完成操作。
阅读 这个精彩的解释 以了解更多信息。