面向對象的屬性和方法


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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM