ES6知识点总结(三)
原始值与引用值
ES6将数据划分为原始值与引用值
原始值,表示单一的数据,如数值10,字符串“abc”,布尔值true等
• 设计6种原始值:
String 字符串
Number 数值
Boolean 布尔值
Null 空值
Undefined 未定义
Symbol
BigInt
• 保存原始值的变量是按值访问
引用值,表示有多个值(原始值或其他引用值)构成的对象
• 实际操作时,访问的是保存对象的内存地址,即为该对象的引用
• 不允许直接访问对象的内存空间
动态属性
- 原始值是不可改变的
- 引用值(对象)可以随时添加、修改和删除其属性和方法
let person = new Object();
person.name = "John";
person.showMe = function () {
console.log("Hi, I'm " + this.name);
};
- 原始值不能有属性
let one = "tom"
one.age = 20
console.log(one,one.age)
//结果:tom undefined
值传递
赋值,即将值复制给变量的过程
原始值与引用值的传递本质上没有区别
确定类型
- 通过typeof操作符判断一个值的类型(适用于原始值)
let i = 22;
console.log(typeof i) //number
let n = null
console.log(typeof n) //object
let a = [2,1]
console.log(typeof a) //Object
- 通常采用instanceof操作符,判断引用值是否为某个构造函数的实例
let obj = new Object();
console.log(obj instanceof Object); //true
原始值包装类型
- 提供了三种特殊引用类型:String、Number、Boolean
- 每当用到某个原始值的方法或属性时,后台会创建一个相应的原始值包装类型的对象,从而暴露出操作原始值的各种方法
- 后台执行步骤:
(1)创建一个包含了原始值的String类型的实例;
(2)调用实例上的特定方法;
(3)销毁该实例;
valueOf:获取对象的原始值,故原始值和引用值可相加计算