Javascript 中的 String 是原始类型还是对象?消息人士称,Undefined、Null、Boolean、Number 和 String 都是 Javascript 中的原始类型。但它说 String 也是一个对象。我很困惑。有人可以解释一下吗?
提前谢谢您;-)
最佳答案
实际上相同的答案适用于:字符串、数字、 bool 值。这些类型具有其原始版本和对象版本,这些版本在应用程序运行时的幕后强制(在您不知情的情况下)。
强制
JavaScript 是弱类型的。这意味着每当您的代码想要执行无效数据类型的操作(例如将字符串添加到数字)时,JavaScript 都会尝试找到适合此场景的最佳匹配。
如上所述,这种机制也称为强制。
基元和属性
您会发现以下代码令人困惑:
> "hello world".length
11
因为“hello world”
是一个字符串文字,即原语。我们知道基元没有属性。一切都对。
那么它是如何工作的呢?强制 - 原语被对象包装(强制)一小部分时间,使用对象的属性并立即处理该对象。
强制是双向的
因此,基元是用其对象包装版本进行转换的 - 但反之亦然。考虑以下代码:
> String("hello ") + String("world")
"hello world"
> Number(2) + 3
5
对象被向下转换为其原始版本以完成操作。
阅读this brilliant explanation了解更多信息。
关于javascript - Javascript 中的 String 是原始类型还是对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7675127/