typeof是一个运算符,其有两种使用方式:
(1)typeof(表达式)
(2)typeof 变量名;返回值是一个字符串,用来说明变量的数据类型;
所以可以用此来判断number, string, object, boolean, function, undefined, symbol 这七种类型,每种情况返回的内容如下表所示:

typeof和instanceof_构造函数

 

 

 1 // 字符串
 2 console.log(typeof('lili')); // string
 3 // 数字
 4 console.log(typeof(1)); // number
 5 // 布尔值
 6 console.log(typeof(true)); // boolean
 7 // undefined
 8 console.log(typeof(undefined)); // undefined
 9 // 对象
10 console.log(typeof({})); // object
11 // 数组
12 console.log(typeof([])); // object
13 // null
14 console.log(typeof(null)); // object
15 // 函数
16 console.log(typeof(() => {})); // function
17 // Symbol值
18 console.log(typeof(Symbol())); // symbol

instanceof运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上,返回值为布尔值,用于指示一个变量是否属于某个对象的实例。

 1 const arr = [1, 2];
 2 // 判断Object的prototype有没有在数组的原型链上
 3 console.log(arr instanceof Object); // true
 4 // 数组arr的原型
 5 const proto1 = Object.getPrototypeOf(arr);
 6 console.log(proto1); // []
 7 // 数组arr的原型的原型
 8 const proto2 = Object.getPrototypeOf(proto1);
 9 console.log(proto2); // []
10 // Object的prototype
11 console.log(Object.prototype);
12 // 判断arr的原型是否与Object的prototype相等
13 console.log(proto1 === Object.prototype); // false
14 // 判断arr的原型的原型是否与Object的prototype相等
15 console.log(proto2 === Object.prototype); // true