首先了解一下原型链:
原型链 : 实例对象与原型之间的连接,叫做原型链
原型链的最外层 : Object.prototype
1.hasOwnProperty : 看是不是对象自身下面的属性.用法如下:
var arr = [];
arr.num = 10;
Array.prototype.num1 = 20;
//alert( arr.hasOwnProperty('num') ); //true
alert( arr.hasOwnProperty('num1') ); //false
2.constructor : 查看对象的构造函数,用法如下:
function Aaa(){
}
var a1 = new Aaa();
alert( a1.constructor ); //Aaa
var arr = [];
alert( arr.constructor == Array ); //true
当写了function Aaa(){
}这个构造函数是,会自动生成Aaa.prototype.constructor = Aaa;所以construcor是每一个函数都有的。
二hasOwnProperty则是通过原型链在Object.prototype下面找到的
var a1 = new Aaa();
alert( a1.hasOwnProperty == Object.prototype.hasOwnProperty ); //true*/
3.instanceof : 对象与构造函数在原型链上是否有关系,用法如下:
function Aaa(){
}
var a1 = new Aaa();
//alert( a1 instanceof Object ); //true
var arr = [];
alert( arr instanceof Array );
4.toString() : 吧对象转换成字符串,系统对象下面都是自带的 , 自己写的对象都是通过原型链找object下面的,所以
var arr = [];
alert( arr.toString == Object.prototype.toString ); //false
function Aaa(){
}
var a1 = new Aaa();
alert( a1.toString == Object.prototype.toString ); //true
利用toString判断一个对象是不是数组 :
var arr = [];
alert( Object.prototype.toString.call(arr) == '[object Array]' );