Undefined、null、Boolean、Number、String
对于应用类型一律返回Object(Function应用类型返回Function)
Object Array Date RegExp Function 基本包装类型(Boolean Number String)
实例:
判断数据类型--返回Boolean
var obj = [1,2,3];
console.log(obj instanceof Array)----true
判断对象是不是另一个的实例
function Fa(){}
function Son(){}
Son.prototype=new Fa();
var obj=new Son();
alert("obj是否是Son的实例? "+(obj instanceof Son));//true
alert("obj是否是Fa的实例? "+(obj instanceof Fa));//true
寄生构造函数模式下,测试o是不是people的实例
function people(name,age,job){
o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){
alert(this.name);
};
return o;
}
var person=new people("zhang","19","student");
person.sayName();------zhang
alert(o instanceof people);---报错找不到o。
问题:在关于类之间通过原型链的方式实现继承的时候,instanceof检测出来的结果不准确
function Fn(){};
Fn.prototype = new Array;
var f = new Fn();
console.log(f instanceof Array);-------true
console.log(f instanceof Object);------true
console.log(f.constructor);------------Array
解决方法--利用Object原型上的toString方法
var a = Object.prototype.toString.call(f);
console.log(a)---------Object