数据类型
ECMAScript变量包含两种不同数据类型的值:基本数据类型
和引用数据类型
。
基本数据类型:名值存储在栈内存中;
引用数据类型:名存在栈内存中,值存在于堆内存中,但是栈内存会提供一个引用的地址指向堆内存中的值。
1.目前基本数据类型有:Boolean、Null、Undefined、Number、String、Symbol,
2.引用数据类型有:Object、Array、Function、RegExp、Date等
3.深拷贝与浅拷贝的概念只存在于引用数据类型
1.极力推荐方法:判断是否为数组或对象,均可用!
// isArray
function isArray(arg){
return Object.prototype.toString.call(arg) === '[object Array]'
}
// isObject
function isObject(arg){
return Object.prototype.toString.call(arg) === '[object Object]'
}
2.instanceof判断(不推荐)
obj instanceof Object //[] 或 {} 均为 Object ,此方法不适合判断数组
3.使用constructor方法
constructor 属性返回对创建此对象的数组函数的引用,就是返回对象相对应的构造函数。
那么判断各种类型的方法:
console.log([].constructor == Array); //true ————————————————————
console.log({}.constructor == Object); //true ____________________
console.log("string".constructor == String); //true
console.log((123).constructor == Number); //true
console.log(true.constructor == Boolean); //true
两者均可由construtor来判断类型~~~~
单独判断:Array:
ES5定义了Array.isArray:
Array.isArray([]) //true