分享
JS 内置对象分类 | arguments | 浅析装箱拆箱 | 隐式类型转换
输入“/”快速插入内容
JS 内置对象分类 | arguments | 浅析装箱拆箱 | 隐式类型转换
飞书用户8444
2024年12月23日修改
内置对象
•
通用对象
Object
注意:
Object 是 JS 中所有对象的父对象,所有其他对象类都继承自 Object
•
包装对象(数据封装类对象)
String | Number | Boolean | Array | Object
•
非标准独立对象 [特殊]
arguments
◦
arguments 是函数作用域内的一个类数组对象,保存了函数调用时传入的所有参数,继承自 Object
◦
特性类似 Array,具有 length 属性,可通过索引访问,但不是真正的 Array,不继承 Array.prototype 方法
◦
非严格模式下,arguments 的值与函数参数值动态绑定,修改参数将修改 arguments
◦
严格模式下,arguments 的值永远是传入参数的初始状态
•
其他对象
Function | Math | Date | RegExp | Error
基本数据类型内置对象
其中,基本数据类型内置对象包括:
•
包装对象:
String | Number | Boolean
◦
支持自动装箱(临时创建)与隐式类型转换
◦
提供大量方法属性
•
非包装对象:
Symbol | Bigint
◦
不支持自动装箱与隐式类型转换
◦
被设计为独立的基本类型,避免装箱或隐式转换可能带来的错误
◦
需要使用 Objcet(Symbol) 与 Objcet(Bigint) 显式创建与获取对象
◦
建议直接使用基本类型,不推荐对象化
装箱(Boxing)
•
定义:
◦
将基本类型转换为对应的对象,分 [显式 | 隐式] 两种
显式装箱(手动装箱)
•
定义:
◦
直接使用内置包装对象对基本类型进行装箱
•
注意:
◦
因尽量避免显式创建包装对象,可能产生令人费解的结果,尽量依靠自动装箱使用基本类型值即可
代码块
JavaScript
var obj = new Object('123');
var obj = new String('123');
var obj = new Object(123);
var obj = new Number(123);
var obj = new Object(true);
var obj = new Boolean(true);
隐式装箱(自动装箱)
•
定义:
◦
访问基本类型的方法或属性时,JS 会自动创建对应包装对象,执行操作后立即销毁
代码块
JavaScript
// eg.1
num.toFixed(2); // '123.00'
// 后台真正步骤为
// (1)var c = new Number(123);
// (2)c.toFixed(2);
// (3)c = null;
// eg.2
name = 'js'
name.toUpperCase(); // JS
name.age = 1;
// 访问属性时自动装箱
// (1)name = new String('js')
// (2)name.age = 1
// (3)console访问前,当前对象已销毁
console.log(name.age); // undefined