数据类型
引用类型是存放在堆内存中的。变量实际上是一个存放在栈内存的指针,指向堆内存中的地址。
基本类型和引用类型的区别
1、存储位置不同。
基本类型存放在栈内存中。引用类型存放在堆内存中。
栈内存中还有引用类型的地址。
2、传值与传址。
基本类型采用值传递。
引用类型采用地址传递。
数据类型的判断
1、typeof
console.log(typeof 2);//number
console.log(typeof null);//object
console.log(typeof {});//object
console.log(typeof []);//object
console.log(typeof (function(){}));//function
console.log(typeof undefined);//undefined
console.log(typeof 'www');//string
console.log(typeof true); // boolean
2、instanceof 对象类型的检测
用于判断一个变量是否是某个对象的实例。
function Dog(){
}
var dog = new Dog();
console.log(dog instanceof Dog);//true
3、Object.prototype.toString.call()
console.log(Object.prototype.toString.call('str')); //[object String]
console.log(Object.prototype.toString.call(12)); // [object Number]
console.log(Object.prototype.toString.call(true));// [object Boolean]
console.log(Object.prototype.toString.call(undefined));// [object Undefined]
console.log(Object.prototype.toString.call(null));// [object Null]
console.log(Object.prototype.toString.call({}));// [object Object]
console.log(Object.prototype.toString.call([]));// [object Array]
console.log(Object.prototype.toString.call(function(){}));// [object Function]
4、constructor
var obj = new Object();
console.log( obj.constructor === Object); // true