Js有哪些数据类型
Js基本数据类型:String (字符串)、Number (数值)、Boolean (布尔值)、Null (空值)、Undefined (未定义)、Symbol (符号)
Js引用数据类型:Array、 date、 function、regexp 、object
区别:基本数据类型的值是存放栈中
引用数据类型的值是存放堆中
检测数据类型的方法
1.typeof 检测一些基本的数据类型
在这里插入代码片
console.log(typeof /\d/);//object
console.log(typeof {});//object
console.log(typeof []);//object
console.log(typeof (null));//object
console.log(typeof 123);//number
console.log(typeof true);//boolean
console.log(typeof function () {});//function
console.log(typeof (undefined));//undefined
2、A instanceof B检测当前实例是否隶属于某各类
//注意双目运算符 a instanceof b ,判断a的构造器是否为b,返回值为布尔值
function b(){}
let a = new b;
console.log(a instanceof b);//true
console.log(b instanceof Object);//true
let arr = [1,2,3,4];
console.log(arr instanceof Array);//true
3.Object.prototype.toString()方法:
在这里插入代码片
例子:
(123).toString()//'123'
(true).toString()//'true'
[12,23].toString()//'12.23'
Object.prototype.toString.call(12)//[boject Number]
Object.prototype.toString.call(true)//[boject Boolean]
//"[object Number]"
//"[object String]"
//"[object Object]"
//"[object Function]"
//"[object Undefined]"
//"[object Null]"
//"[object RegExp]"
//"[object Boolean]"
4.constructor属性:判断某个实例对象是不是这个构造函数创建出来的。
在这里插入代码片
function Anamil(name) {
this.name = name
}
let ana1 = new Anamil('dog');
function f(){}
console.log('--------')
console.dir(ana1.constructor == Anamil) //true
console.dir(ana1.constructor == Object) //false
console.log('--------')
5.valueOf:可以看到数据最本质内容(原始值)
例子:
let a = "12345";
let b= new String('12345');
console.log(typeof a);//string
console.log(typeof b);//object
console.log(a == b);//true (typeof检测出来是对象居然和一个数组相等,显然b并不是一个真的对象。)
//此时看看 valueOf()的表现
console.log(b.valueOf());//12345 拿到b的原始值是 字符串的12345
console.log(typeof b.valueOf())//string 这才是 b的真正的数据类型
6.hasOwnporperty(属性名(K值)) 检测当前属性是否为对象的私有属性
例子:
let obj = {
name:"lxw"
};
console.log(obj.hasOwnProperty('name'));//true --key值
console.log(obj.hasOwnProperty('lxw'));//false --value值
7.判断是否是数组
var arr = ["Banana", "Orange", "Apple", "Mango"];
//系统默认是 arr.prototype.constructor = Array
console.log(arr.constructor === Array) //打印结果为true则是数组
console.log(arr instanceof Array) //打印结果为true则是数组
console.log(Object.prototype.toString.call(arr) === ‘[object Array]’) //打印结果为true则是数组
console.log(Array.isArray(arr)) //打印结果为true则是数组