-
typeof可以检测那些类型--返回字符串number/string/...
- 识别所有值类型--Undefined/ Number/ String/ Boolean/Symbol
- 识别函数类型(也是一种特殊的引用类型)。原理:object内部定义了一个call方法,有call方法返回function,否则返回object
- 判断是否为引用类型(不可再细分)--null / Array / object
- 注意!!!null是基本数据类型也可以说是一种特殊的引用数据类型(指向空地址),之所以typeof null会返回object,是因为null的机器码后三位为000;
console.log(typeof(a)); //undefined
console.log(typeof(123)); //number
console.log(typeof(true)); //boolean
console.log(typeof('abc')); //string
console.log(typeof(function(){})); //function
console.log(typeof Array); //function
console.log(typeof(null)); //object
console.log(typeof({})); //object
console.log(typeof(new Date())); //object
console.log(typeof([])); //object
/* 用new方法实例化的对象 */
var str1 = new String('hello')
console.log(str1);//object--key: value ->0: h, 1: e,...
-
instanceof 检测数据类型--返回true / false
instanceof 的检测方式基于原型链上的构造函数(constructor)来判断
原型链了解CSDN
console.log([] instanceof Array); //true
console.log({} instanceof Object); //true
console.log(new Date() instanceof Date); //true
console.log(null instanceof Object); //false
function Person() {}
console.log(new Person instanceof Person); //true
console.log([] instanceof Object); //true
console.log(new Date() instanceof Object); //true
console.log(new Person() instanceof Object); //true
- 基于原型对象的检测方法--Object.prototype.toString.call()
console.log(Object.prototype.toString.call([])); //[object Array]
console.log(Object.prototype.toString.call(null)); //[object Null]
本文详细解析typeof和instanceof在JavaScript中的使用,涵盖基本类型检测、引用类型识别、函数类型辨识以及原型链检测。通过实例演示,揭示了null和对象的特殊性以及它们在类型判断中的角色。

721

被折叠的 条评论
为什么被折叠?



