/*
* 数据类型分类
* 1.原始值类型「俗称:值类型、基本数据类型」
* + number 特殊:NaN(isNaN & Object.is)、Infinity
* + string
* + boolean
* + null
* + undefined
* + symbol
* + 给对象设置唯一值属性「对象属性名的类型:字符串、Symbol」
* + Symbol.hasInstance/toStringTag/toPrimitive...
* + ...
* + bigint
* + Number.MAX_SAFE_INTEGER/MIN_SAFE_INTEGER JS中的最大/最小安全数字
* + 数字后面加n就是bigint类型的中,例如:9007199254740991n,bigint值保证我们超过安全数字,计算也可以准确
* + 服务器返回超大数字,我们可以把其转换为bigint再进行运算;运算完的结果,变为字符串传递给服务器即可...
* + ...
* 2.对象类型「俗称:引用数据类型」
* + 标准普通对象 {name:'zhufeng'}
* + 标准特殊对象 数组、正则、日期、错误...
* + 非标准特殊对象 原始值类型的值,基于构造函数模式,new出来的实例对象
* + 可调用/执行对象「函数对象」 function
*/
/* let sy = Symbol('BB'),
a = {};
let obj = {
[Symbol('AA')]: 100,
[sy]: 200
};
obj[a] = 'zhufeng'; //obj["[object Object]"]="zhufeng"
console.log(obj[Symbol('AA')]); //undefined
console.log(obj[sy]); //200
console.log(Object.getOwnPropertySymbols(obj)); //[Symbol(AA),Symbol(BB)] 获取当前对象所有Symbol类型的私有属性
console.log(Object.keys(obj)); //["[object Object]"] 获取所有非Symbol类型的私有属性 */
/*
* JS中的数据类型检测
* + typeof
* + 检测的结果是一个字符串,字符串中包含了对应的数据类型
* + 局限性「特点」
* + typeof null -> “object”
* + typeof检测对象类型,除函数对象返回“function”,其余返回都是“object”「不能细分对象」
* + typeof检测一个未被声明的变量,不会报错,而是返回“undefined”
* + ...
* + 底层处理机制
* + 所有的数据类型值,在计算机底层都是按照“二进制”来存储的「64位」
* + typeof检测数据类型,就是按照存储的“二进制值”来进行检测的:前三位是000的,都被认为是对象{如果对象内部实现了[[Call]]方法,则认为是函数,返回“function”},返回值是“object”...
* + typeof的处理性能相对好一些
* + ...
* + instanceof
* + constructor
*/
// console.log(typeof 1); //"number"
// console.log(typeof new Number(1)); //"object"
// Object.prototype.toString.call() 检测数据类型
//通过call指定Object.prototype对象中的toString方法的this
/*
console.log(Object.prototype.toString.call(123)); //[object Number]
console.log(Object.prototype.toString.call('123')); //[object String]
console.log(Object.prototype.toString.call(undefined)); //[object Undefined]
console.log(Object.prototype.toString.call(true)); //[object Boolean]
console.log(Object.prototype.toString.call({})); //[object Object]
console.log(Object.prototype.toString.call([])); //[object Array]
console.log(Object.prototype.toString.call(function(){})); //[object Function]
console.log(Object.prototype.toString.call(null)); //[[object Null]]
*/
JS数据类型以及数据类型检测
最新推荐文章于 2021-07-31 11:03:46 发布