1、typeof检测返回对应数据类型
console.log(typeof 123); // number
console.log(typeof true); // boolean
console.log(typeof "hello"); // string
console.log(typeof undefined); // undefined
console.log(typeof null); // object
// 计算机typeof 按照机器码后3位判断数据类型
// null 00000000 => object后3位为0
console.log(typeof []); // object
console.log(typeof {}); // object
console.log(typeof new Date()); // object
console.log(typeof function () {}); // function
console.log(typeof Array); // function
// typeof 引用类型 object function
// object + call方法 => function
字符串示例
var name1 = "Tom";
console.log(name1); // Tom
console.log(typeof name1); //string
var name2 = new String("Tom");
console.log(name2);
// String {"Tom"}
// 0: "T"
// 1: "o"
// 2: "m"
// length: 3
console.log(typeof name2); // object
总结:
typeof 少null, 多function
2、instanceof检测返回bool: true/false
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log(new Date() instanceof Date); // true
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
instanceof 原型链查找
A instanceof B == True
B instanceof C == True
=> A instanceof C == True
console.log(Object.prototype.toString.call("1")); // [object String]
console.log(Object.prototype.toString.call([])); // [object Array]
总结:
1.typeof 返回值是一个字符串:
? ? ?1.number string boolean
? ? ?2.function(函数)
? ? ?3.object(null,数组,对象)
? ? ?4.undefined
2.instanceof 返回布尔值,判断A 是否为B 的实例对象,检测的是原型