判断一个对象是否属于某一类

javascript中检测对象的类型的运算符有:typeof、constructor、instanceof。

typeof:typeof是一个一元运算符,经常用来检测一个变量是不是最基本的数据类型,返回结果是一个说明运算数类型的字符串。如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在)。 但 typeof 的能力有限,其对于Date、RegExp、Array类型返回的都是"object"。所以它只在区别对象和原始类型的时候才有用。要区一种对象类型和另一种对象类型,必须使用其他的方法。

instanceof 运算符:用来判断某个构造函数的 prototype 属性所指向的对象是否存在于另外一个要检测对象的原型链上。简单说就是判断一个引用类型的变量具体是不是某种类型的对象,instanceof 运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字或构造函数。

({}) instanceof Object              // true
([]) instanceof Array               // true
(/aa/g) instanceof RegExp           // true
(function(){}) instanceof Function  // true

如果 object 是 class 或构造函数的实例,则 instanceof 运算符返回 true。如果 object 不是指定类或函数的实例,或者 object 为 null,则返回 false。instanceof方法可以判断变量是否是数组类型。

constructor 属性: JavaScript中,每个对象都有一个constructor属性,它引用了初始化该对象的构造函数,常用于判断未知对象的类型。如给定一个求知的值 通过typeof运算符来判断它是原始的值还是对象。如果是对象,就可以使用constructor属性来判断其类型。

var arr=[];
arr.constructor();    //[]

var arr= new Function();
arr.constructor();    //function anonymous(){ }

var arr=new RegExp();
arr.constructor();    //    /(?:)/

如何使用 constructor 属性:

<script type="text/javascript">

function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
}

var bill=new employee("Bill Gates","Engineer",1985);

document.write(
bill.constructor
);

</script>

输出:

function employee(name, job, born)
{this.name = name; this.job = job; this.born = born;}

Object.prototype.toString.call():该方法是目前为止发现的判断一个对象类型的最好的办法。

var arr=[];
Object.prototype.toString.call(arr);  //"[object Array]"

var arr={};
Object.prototype.toString.call(arr);  //"[object Object]"

var arr=new Date();
Object.prototype.toString.call(arr);  //"[object Date]"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容