Javascript 个基元

Javascript primitives

我对 JS 还是个新手,目前正在学习对象,对原语有点困惑。在 W3schools 上,javascript 原语定义为:

“原始值是没有属性或方法的值。

原始数据类型是具有原始值的数据。

JavaScript定义了5种原始数据类型:

字符串

人数

布尔值

未定义

每:W3Schools

但是字符串不是一个对象并且具有诸如 string.prototype.indexOf() 和 string.prototype.toUpperCase() 之类的方法,这些被认为是方法吗?我错过了什么?

其实就是string和String的区别。字符串是原始字符串,但字符串是对象。

var str = "string"  //primitive
var str1 = new String("string") //object

当您将方法应用于 String 对象 class 的 str 时,它会自动转换为对象。

自动装箱 是 JS 将原始数据类型转换为相应对象包装器 classes 的过程。例如,string 将被转换为 String

可能是因为 JavaScript 自动用对象包装了这些原始值。根据MDN:

Except for null and undefined, all primitive values have object equivalents that wrap around the primitive values:

  • String for the string primitive.
  • Number for the number primitive.
  • Boolean for the Boolean primitive.
  • Symbol for the Symbol primitive.

在JavaScript中有5种基本类型:undefined、null、boolean、string和number。其他一切都是对象。基本类型 boolean、string 和 number 可以由它们的对象对应物包装。这些对象分别是 Boolean、String 和 Number 构造函数的实例。