JavaScript-类型判断方法

1.用typeof判断数据类型

(1)注意点:typeof对于new构造出来的或是object和array都是返回一个object。
(2)用法:

        console.log(typeof 1)//输出number
		console.log(typeof '1')//输出string
		console.log(typeof true)//输出boolean
		console.log(typeof null)//输出object
		console.log(typeof NaN)//输出number
		console.log(typeof undefined)//输出undefined
		console.log(typeof {})//输出object
		console.log(typeof [])//输出object
		console.log(typeof new Date())//输出object
		console.log(typeof Symbol())//输出symbol
		if ((typeof 1) == 'number') {
			console.log(true)
		} else {
			console.log(false)
		}//输出true
		if ((typeof null) == 'number') {
			console.log(true)
		} else {
			console.log(false)
		}//输出true

2.用instanceof方法判断数据类型: instanceof 用来判断对象是否为某一数据类型的实例

注意点:不能判断null、undefined、number、string和Boolean类型
用法:

        console.log(1 instanceof Number)//输出为false ,
		console.log(new Number(1) instanceof Number)//输出true
		//因为instanceof 用来判断对象是否为某一数据类型的实例
		//且不能判断null、undefined
		console.log(true instanceof Boolean)//输出false
		console.log("1" instanceof String)//输出false
		// console.log(null instanceof Null)//报错
		// console.log(undefined instanceof undefined)//报错
		//*判断对象是否为某一数据实例
		console.log(new Date() instanceof Date)//输出true
		console.log(new RegExp() instanceof RegExp)//输出true

手动实现instanceof方法:

		function instance_Of(target, resource) {
						let r = resource.prototype 
						let t = target.__proto__
						 while(true) {
							 if (t === null) return false
							 if (r === t) return true
							 t = t.__proto__
						 }
					}
		console.log(instance_Of(new Map(),Map))//输出true
		console.log(instance_Of(new String('1'),String))//输出true
		console.log(instance_Of(new Number(1),String))//输出false

3.用Object.prototype.toString方法判断数据类型

特点:最稳定的判断方法
运用:

console.log(Object.prototype.toString.call(1))//输出[object Number]
console.log(Object.prototype.toString.call("1"))//输出[object String]
console.log(Object.prototype.toString.call(true))//输出[object Boolean]
console.log(Object.prototype.toString.call(null))//输出[object Null]
console.log(Object.prototype.toString.call(undefined))//输出[object Undefined]
console.log(Object.prototype.toString.call(Symbol))//输出[object Function]
console.log(Object.prototype.toString.call(function(){}))//输出[object Function]
console.log(Object.prototype.toString.call({}))//输出[object Object]
console.log(Object.prototype.toString.call([]))//输出[object Array]
console.log(Object.prototype.toString.call(new Date()))//输出[object Date]
console.log(Object.prototype.toString.call(new Set()))//输出[object Set]

4.用constructor方法判断数据类型

特点:不能判断null和undefined
运用:

console.log((1).constructor)//输出ƒ Number() { [native code] }
console.log((1).constructor === Number)//输出true
console.log(true.constructor)//输出ƒ Boolean() { [native code] }
console.log(true.constructor === Boolean)//输出true
console.log(Symbol().constructor === Symbol)//输出true
console.log({}.constructor === Object)//输出true
console.log([].constructor === Array)//输出true
console.log(new Map().constructor === Map)//输出true
// console.log(null.constructor === null)//报错,因为没有null的属性
// console.log(undefined.constructor === undefined)//报错,因为没有undefined的属性
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值