Javascript 类型
- 基本类型: String、Number、Boolean、Symbol、Undefined、Null
- 引用类型: Object
typeof
1 2 3 4 5 6 7 8 9
| typeof ""; typeof 1; typeof Symbol(); typeof undefinded; typeof null; typeof []; typeof new Function(); typeof new Date(); typeof new RegExp();
|
- 对于基本类型,除
null
以外,均可以返回正确的结果
- 对于引用类型,除了
function
以外,一律返回 object 类型
- 对于 null ,返回 object 类型
- 对于 function 返回 function 类型
instanceof
instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。
1 2 3 4 5 6 7 8 9 10
| [] instanceof Array; {} instanceof Object; new Date() instanceof Date;
function Person(){}; new Person() instanceof Person;
[] instanceof Object; new Date() instanceof Object; new Person() instanceof Object;
|
constructor
1 2 3 4 5 6 7 8 9
| "".constructor == String; new Number(1).constructor == Number; true.constructor == Boolean; new Function().constructor == Function; new Date().constructor == Date; new Error().constructor == Error; [].constructor == Array; document.constructor == HTMLDocument; window.constructor == Window;
|
- null 和 undefinde 是无效的对象,没有 constructor
- 函数的 constructor 是不稳定的,自定义对象,重写 prototype 后,原来的 constructor 引用丢失, constructor 会默认 Object
1 2 3 4 5
| funciotn F(){} F.prototype = {a:'xxxx'} var f = new F(); f.constructor == F; f.constructor == Object
|
toString
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Object.toString(); Object.prototype.toString.call(""); Object.prototype.toString.call(1); Object.prototype.toString.call(true); Object.prototype.toString.call(Symbol()); Object.prototype.toString.call(undefinded); Object.prototype.toString.call(null); Object.prototype.toString.call(new Function()); Object.prototype.toString.call(new Date()); Object.prototype.toString.call([]); Object.prototype.toString.call(new RegExp()); Object.prototype.toString.call(new Error()); Object.prototype.toString.call(document); Object.prototype.toString.call(window);
|