js判断类型的四种方法

typeof:使用typeof可以很方便的判断六种类型:undefined、boolean、string、number、object、function 数组和null会被判断为object类型

instanceof:instanceof判断对象是某类型的实例,他可以很方便的判断出数组和null,但是也有不足,

  1:在多个框架的时候,如果从一个iframe传递数组到另外一个iframe去判断是否是数组,就会出问题,因为instanceof本质上是判断实例,而两个iframe分属不同的window对象,所以这个时候就无法判断

  2:instanceof可以判断出实例的数组,同样它也认为实例是对象,这是因为instanceof 检测一个对象A是不是另一个对象B的实例的原理是:查看对象B的prototype指向的对象是否在对象A的[[prototype]]链上。如果在,则返回true,如果不在则返回false。不过有一个特殊的情况,当对象B的prototype为null将会报错(类似于空指针异常)。array的prototype所指向的对象确实是在数组实例的的原型链上,但是object的prototype所指向的对象也是在数组实例的的原型链上

constructor:构造器 它指向构造该对象的构造函数,比如说:var obj = {};console.log(obj .constructor == Object);但是constructor容易被篡改,所以不是很稳定

Object.prototype.toString.call():

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]

转载于:https://www.cnblogs.com/mrzhu/p/7777986.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值