1.constructor:查看對象的構造函數
每個原型自動添加constructor屬性;
for in的時候,有些屬性找不到;
避免修改constructor屬性;
function Arr(){};
var a1=new Arr();
alert(a1.constructor);//Aaa
var arr=[];
alert(arr.constructor);//Array
alert(arr.constructor==Array);//true
不管是自己寫的函數,還是系統自帶的函數,創建一個對象,系統都會自動生成一個Arr.prototype.constructor
2.hasOwnProperty():看是不是對象自身下面的屬性,例下;
var arr=[];
arr.num=10;
Array.prototype.num2=20;//所有數組對象都添加了一個num2屬性
alert(arr.hasOwnProperty("num"));//true num是arr獨有的
alert(arr.hasOwnProperty("num"));//false num1是所有數組對象共有的
3.instanceof(運算符):
對象跟構造函數在原型鏈上是否有關系;
function Aaa(){}
var a1=new Aaa();
alert(a1 instanceof Aaa );//判斷a1和Aaa是不是在同一個原型鏈上;結果彈出:true,在同一個原型鏈上,
alert(a1 instanceof Array );//false ,a1喝Array數組對象不在同一個原型鏈上,兩者之間沒有關系;
alert(a1 instanceof Object);//true; 對象最外層都是Object。
instanceof也可以做類型判斷,例下:
var a1=[];
alert(a1 instanceof Array );//true
var a1=new Data();
alert(a1 instanceof Array );//false
4.toString():object上的方法,系統對象上都是自帶的,自己寫的對象都是通過原型鏈從Object上查到的;
var arr=[];
alert(arr.toString);//function toString(){[native code]}
function Arr(){}
var a1=new Arr();
alert(a1.toString);//function toString(){[native code]}
alert(a1.toString==Object.prototype.toString);//true
toString():把數組轉化成字符串
var a1=[1,2,3];
Array.prototype.toString=function(){
return this.join('+');
}
alert(arr.toString());//'1,2,3'
toString():用來進行進制轉換
var num=255;
alert(num.toString(16));//'ff'
toString()做類型判斷
var arr=[];
alert( Object.prototype.toString.call(arr) ); //object Array;
alert( Object.prototype.toString.call(arr) =='[object Array]' ); //true,arr是數組
var arr={};
alert( Object.prototype.toString.call(arr) ); //object Object;
var arr=new Date();
alert( Object.prototype.toString.call(arr) ); //object Date;
var arr=new RegExp();
alert( Object.prototype.toString.call(arr) ); //object RegExp;