值类型和引用类型:
介绍Symbol之前,首先梳理一下js的数据类型。js数据类型分为两大类:值类型和引用类型。
值类型:number,string,null,undefined,boo
引用类型:Object(Array,Function)
值类型和引用类型的区别:
1.值类型保存在栈中
引用类型保存在堆中
2.值类型:变量直接的互相赋值,是重新开辟一块内存空间,变量之间的变动互不影响
引用类型:变量之间的互相赋值是指向对象的一个指针,该指针保存在栈中
3.值类型用typeof检测数据类型
指针类型用instanceof检测数据类型
Symbol的介绍:
Symbol是es6 中引入的一种新的原始数据类型,表示独一无二的值,是js的第七种数据类型,而不是构造函数
Symbol的作用:
Symbol可以产生一个独一无二的值,可以避免属性名之间互相冲突
Symbol用法:
1.声明Symbol
Symbol可以接受一个字符串作为参数,表示对Symbol实例的描述,比较容易区分
可以用es2019提供的属性description返回描述的值
2.Symbol在对象中可作为属性名
3.属性名遍历
Symbol作为属性名遍历的时候,通过for...in,for...of不能拿到Symbol属性名
但是,通过Object.getOwnPropertySymbols()方法可以取到指定对象所有的Symbol属性名
暂时总结这些,后续再进行学习补充。