Javascript 个基元
Javascript primitives
我对 JS 还是个新手,目前正在学习对象,对原语有点困惑。在 W3schools 上,javascript 原语定义为:
“原始值是没有属性或方法的值。
原始数据类型是具有原始值的数据。
JavaScript定义了5种原始数据类型:
字符串
人数
布尔值
无
未定义
但是字符串不是一个对象并且具有诸如 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 构造函数的实例。
我对 JS 还是个新手,目前正在学习对象,对原语有点困惑。在 W3schools 上,javascript 原语定义为:
“原始值是没有属性或方法的值。
原始数据类型是具有原始值的数据。
JavaScript定义了5种原始数据类型:
字符串
人数
布尔值
无
未定义
但是字符串不是一个对象并且具有诸如 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 构造函数的实例。