JavaScript数据类型

JavaScript数据类型

js一共有六种数据类型:五种简单数据类型和一种复杂数据类型:
五种简单数据类型包括:String、Number、Boolean、undefined、Null
一种复杂数据类型:obeject
检测数据类型
1.typeof

typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。返回的结果用该类型的字符串(全小写字母)形式表示,包括以下 7 种:number、boolean、symbol、

string、object、undefined、function 等。
console.log(typeof test)
console.log(typeof '');// string
console.log(typeof 1);// number 
console.log(typeof Symbol());// symbol 
console.log(typeof true);//boolean 
console.log(typeof undefined);//undefined 
console.log(typeof null);//object 
console.log(typeof [] );//object 
console.log(typeof new Function());// function 
console.log(typeof new Date());//object 
console.log(typeof new RegExp());//object 

2.instanceof
instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型,我们用一段伪代码来模拟其内部执行过程:

console.log({} instanceof Object)    //true
console.log([1] instanceof Array)    //true
console.log([1] instanceof Object)   //true

instanceof 能够判断出 [ ] 是Array的实例,但它认为 [ ] 也是Object的实例

console.log([].__proto__)  //[]
console.log([].__proto__.__proto__)   //{}
console.log(Array.prototype.__proto__) //{}
console.log(Object.prototype.__proto__)   //null

从 instanceof 能够判断出 [ ].proto 指向 Array.prototype,而 Array.prototype.proto 又指向了Object.prototype,最终 Object.prototype.proto 指向了null,标志着原型链的结束。因此,[]、Array、Object 就在内部形成了一条原型链

从原型链可以看出,[] 的 proto 直接指向Array.prototype,间接指向 Object.prototype,所以按照 instanceof 的判断规则,[] 就是Object的实例。依次类推,类似的 new Date()、new Person() 也会形成一条对应的原型链 。因此,instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。
3.Array.isArray()
Array.isArray() 方法 。该方法用以确认某个对象本身是否为 Array 类型

console.log(Array.isArray([1,3,4,2,4]))  //true 

4.toString()
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。
对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

console.log(Object.prototype.toString.call(''))    //object String]
console.log(Object.prototype.toString.call(1))   //[object Number]
console.log(Object.prototype.toString.call([]))  //[object Array]
console.log(Object.prototype.toString.call({}))  //[object Object]
console.log(Object.prototype.toString.call(Symbol()))  //[object Symbol]
console.log(Object.prototype.toString.call(undefined))   //[object Undefined]
console.log(Object.prototype.toString.call(null))  //[object Null]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值