一、js 的 类型
①数据类型具体有哪些?
基本数据类型:布尔值(Boolean) 字符串(String) 数字(Number)Undefined Null Symbol(表示独一无二) BigInt (精确表示最大整数)
引用数据类型: Object (包括:function Array Date 等)
当寻找引用数据类型时 从栈中的指针 指向 堆中数据类型的具体位置从而可使用该数据类型。而寻找基本数据类型时,可直接从栈中获取。
补充: Symbol 的应用
const Sym = Symbol('123')
eg: const student {
name:'小明',
age:'12',
[Sym]: 优秀
}
Symbol( ) 调用 es6 提供的 Symbol() 函数 在函数内编写该函数的描述,用处可做对象的键名来描述这个键值对。注意: for in , for of ,Object.keys两个遍历语句均拿不到 Symbol 键名。
如何拿到Symbol所描述的键值 : Student[Sym]
注意: 即使两个 Symbol 的描述一样 两个Symbol 也不相等 (这个是Symbol 的唯一性)
eg: const student {
name:'小明',
age:'12',
Symbol('123') : 优秀,
Symbol('123') :有钱
}
现在如何拿到Symbol 所描述的键值,使用Object.getOwnpropertySymbols(student) ,
得到的时所有Symbol 描述组成的数组之后 for of 将其便利
let SymbolList = Object.getOwnpropertySymbols(studen)
for(let pro of SymbolList ){
student[pro] // 优秀 有钱
}
Symbol.iterator Symbol 内置的值,如果对象有Symbol.iterator 这个属性则可被for of 遍历
但是对象没有该值,数组具有该Symbol.iterator 可使用 for of 遍历
数据类型的判断
什么可以判断数据类型呢?
typeof、object.prototype.toString.call()、instanceof、constructor