typeof
console.log(typeof 1); //number
console.log(typeof true); // boolean
console.log(typeof '1'); // string
console.log(typeof null); // object
console.log(typeof undefined); // undefined
console.log(typeof []); // object
console.log(typeof {}); // object
console.log(typeof function(){}); //function
console.log(typeof typeof function(){}); //string
toString
封装一个typeof方法,实现不同数据类型可以正确识别:
function type (target) {
//分两类,原始值和引用值
var ret = typeof(target);
var template = {
"[object Array]" : "array",
"[object Object]" : "object",
"[object Number]" : "number-object",
"[object Boolean]" : "boolean-object",
"[object String]" : "string-boject",
}
if(target === null) {
return "null";
}
if (ret == "object") {
var str = Object.prototype.toString.call (target);
return template[str];
}else{
return ret;
}
}
console.log(type([])); // array
instanceof
instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
语法:object instanceof constructor
参数:object(要检测的对象.)constructor(某个构造函数)
描述:instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
function Foo (){};
let foo = new Foo();
console.log(foo instanceof Foo); //false
console.log({} instanceof Array); //false
console.log([] instanceof Array); //true
console.log([] instanceof Object);//true