ECMAScript有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、String。
typeof操作符
- 对一个值使用typeof操作符可能返回下列某个字符串
undefined——> 如果这个值未定义
boolean——> 如果这个值是布尔值
string——> 如果这个值是字符串
number——> 如果这个值是数值
object ——> 如果这个值是对象或者null
function ——> 如果这个值是函数
为数组是,typeof返回object
var arr = new Array("1","2","3","4","5");
console.log(typeof arr); //object
typeof针对基本数据类型可以判断参数的类型,然而对于对象,数组,null都会返回object。
instanceof操作符
-
instanceof操作符会返回一个Boolean值,指出对象是否是特定类的一个实例
-
用法一:obj instanceof Object 检测Object.prototype是否存在于参数obj的原型链上。
function Person(){}; var p =new Person(); console.log(p instanceof Person);//true
-
用法二:继承中判断实例是否属于它的父类
Student和Person都在s的原型链中function Person(){}; function Student(){}; var p =new Person(); Student.prototype=p;//继承原型 var s=new Student(); console.log(s instanceof Student);//true console.log(s instanceof Person);//true
-
该方法存在的不足在于其假定只有一个全局执行环境。如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。
Object.prototype.toString
object.prototype.toString可以精准判断变量类型
var arr = [122,233,255];
var a = null;
var b = true;
var result1 = Object.prototype.toString.call(a);
console.log(result1); //[object Null]
var result2 = Object.prototype.toString.call(b);
console.log(result2); //[object Boolean]
var result3 = Object.prototype.toString.call(arr);
console.log(result3); //[object Array]