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

标签 javascript

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/

相关文章:

javascript - 单引号在 IOS 和 Sierra 上的处理方式不同吗?

JavaScript:将原型(prototype)函数放在哪里

Javascript正则表达式提取标题和iframe

javascript - 将数组的随机正值转换为负值

javascript - 如何将可单击行连接到从数据库检索的特定数据部分?

javascript - 使用 Not Null 将 findAll 序列化

javascript 使用 getElementById 创建具有属性的对象

javascript - 使用 grunt 将一个函数的多个部分连接并 uglify 到一个文件中

javascript - 为 <div> 元素添加延迟加载

javascript - iframe.src 属性中的 "javascript:"、 "#"和 "javascript:false"有什么区别