ES6 学习笔记(三)原始值与引用值
总结:
1、原始值,表示单一的数据,如10,“abc”,true等。
1.1 ES的6种原始值: Undefined、Null、Boolean、Number、String、Symbol
1.2 保存原始值的变量是按值访问,操作存储在变量内存中的实际值
2、引用值,表示有多个值(原始值或其他引用值)构成的对象
2.1 ES不允许直接访问对象的内存空间。
2.2 实际操作对象时,访问的是保存对象的内存地址,即该对象的引用。
3、动态属性
3.1 原始值是不可改变的。
3.2 引用值(对象)可以随时添加、修改和删除它的属性和方法。
如:
1 | let person = new Object(); |
运行结果:{ name: ‘小明’, sayhello: [Function (anonymous)] }
3.3 原始值不能有属性
如:
1 | let one = "小明"; |
运行结果:
小明 undefined
4、值传递
4.1 赋值,即将值复制给变量的过程
4.2 原始值与引用值本质上没有区别,都是将一个变量中保存的信息复制给另一个变量,如:
1 | let a = 100; |
运行结果:
100 101
1 | let obj1 = { value: 100 }; |
运行结果:
200 200
5、确定类型
5.1 方法:通过typeof操作符来判断一个值的类型
如:
1 | let a = null; |
5.2 对于引用值,typeof的意义不大,通常采用instanceof操作符,判断引用值是否为某个构造函数的实例。
如:
1 | let obj = new Object(); |
6、原始值包装类型
为了方便操作原始值,ES提供了3中特殊的引用类型:Boolean、Number和String。每当用到某个原始值的方法或属性时,后台会创建一个相应的原始值包装类型的对象,从而暴露出操作原始值的各种方法。如:
1 | let s1 = "hello world"; |
后台执行步骤:
(1)创建一个包含了原始值的String类型的实例s1;
(2)s2调用s1实例上的substr方法;
(3)销毁s1实例;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 如诗!
评论
