原始值:为何'5'、666等原始值可以操作对象才有的属性和方法?
在js里面,让我们运行一段有趣的代码:
console.log(5 === new Number(5)); //false
//对 5 进行操作
console.log(typeof (5).toString());//string
a = new Number();
console.log(Object.prototype.toString.call(a)); // [object Number]
console.log(Object.prototype.toString.call(5)); // [object Number]
一、ECMAScript规定的基本数据类型
原始值:
-
指的是 JavaScript 中的基本数据类型值:
Number
(数字):如42
,3.14
String
(字符串):如"hello"
Boolean
(布尔):如true
,false
null
undefined
Symbol
(符号)BigInt
(大整数)
引用类型,借鉴java万物皆对象设计理念,Object:
-
Object引用类型包括
Function
Array
RegExp
原始值如1、'abc'、'3'等为什么可以访问其属性和方法,对其进行操作?
JS隐式操作:自动装箱
let num = 42; //42是原始值
let temp = new Number(num); // 临时包装对象,调用其属性和方法
console.log(temp.toString());
// 之后,临时对象被丢弃