javascript中對象字面量與數組字面量


第一部分 

  我們知道JavaScript中的數據類型有基本數據類型和引用類型,其中Object類型就是非常常用的類型。那么如果創建一個Object類型的實例呢?下面我介紹兩種方法:

   第一:構造函數法。

    

1
2
3
var  person= new  Object();
person.name= "zhuzhenwei" ;
person.age=20;

  這里Object()實際上是默認的構造函數,顯然,為滿足需要,我們可以通過后兩條語句添加新的屬性。JavaScript高級程序設計第3版83頁介紹說,該構造函數為新對象定義了默認的屬性和方法。但,這是真的嗎?我們可以驗證一下。因為for-in語句可以遍歷對象中所有的屬性,因此我們可用它來驗證:

1
2
3
4
var  person= new  Object();
for ( var  propName  in  person){
    console.log(propName);
}

  如果Object構造函數有默認屬性,那么我們在控制台上應該是可以看到的,但實際上:

什么都沒有?!   

 

也就是說Object本身是不具有任何默認的屬性的。

因為如果我們添上后面兩句:

1
2
3
var  person= new  Object();
person.name= "zhuzhenwei" ;
person.age=20;<br> for ( var  propName  in  person){<br>  console.log(propName);<br>}

 我們就可以得到如下:

即此時person就有了兩個屬性,也就是說,Object函數自身確實沒有默認的屬性

但是,真的是這樣嗎?javascript高級程序設計會出現這樣的錯誤嗎?答案是不會~

 

 
        

因為在這里使用for-in語句是不合適的,不能通過它枚舉初object的所有屬性。它只適用於window之類的對象,這里我們最好使用in操作符。因為object通過測試是不可枚舉的。 alert(object.propertyisenumerable("prototype"));//false

1
2
3
4
var  person= new  Object();
console.log( "toString"  in  person); //true
console.log( "valueOf"  in  person); //true
console.log( "constructor"  in  person); //true

  也就是說Object至少是有上述屬性和方法的。

 

 

 

 

   第二:對象字面量表示法

 

1
2
3
4
var  person={
     name: "zhuzhenwei" ,
     age:18
};

    這里也創建了一個對象實例,同樣通過for-in語句,我們可以驗證其也只有name和age兩個屬性,且在通過對象字面量表示法定義對象時,實際上不會調用Object構造函數。 

    關於對象字面量有以下一點需要注意的地方:

  • 在末尾需加分號;表示結束。
  • 在一個屬性定義之后用逗號分隔,最后一個屬性不需要
  • 屬性名可以加雙引號,好處是我們可以包含錯誤的字符。並使用方括號表示法來訪問對象的屬性。

      

比如:

1
2
3
var  person= new  Object();
person.age age=18;
console.log(person.age age);

這時,由於屬性名中包含了空格,因此得到的結果一定是 語法錯誤。

然而:

1
2
3
4
var  person={
       "age age" :18
};
  console.log(person[ "age age" ]);

這時候我們就可以得到正確的答案了。

 

 

最后,實際上對象字面量還可以作為參數傳遞,大家有興趣可以去了解,這里就不介紹了~

 

第二部分:

 

                什么使數組字面量呢?對象字面量用於創建對象,數組字面量即用於創建數組。創建數組有兩種方法。

  第一:構造函數法.

  

1
var  arr= new  Array();

  第二:數組字面量法

1
var  arr=[ "zhu" , "zhen" , "wei" ];

  因為所有的引用類型都是繼承自Object,因此Array也是繼承自object的,並在繼承的基礎上添加了自己的屬性和方法。

1
2
3
4
var  arr= new  Array();
console.log( "toString"  in  arr); //true
console.log( "valueOf"  in  arr); //true
console.log( "length"  in  arr); //true


免責聲明!

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



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