2013-11-01 41 views
1

這是一個代碼示例,摘自一本名爲的JavaScript:權威指南,第6版,我不明白。Javascript空對象

他正在談論物體。

var book ={ 
    topic: "javascript", 
    fat: true 
}; 
book.topic    => "javascript" 
book.["fat"]   => True 
book.author="flanagan"; // creates new property 
book.contents= {};  // empty object* 

所以我不明白的是最後一部分。他是否添加了一個名爲「內容」的新屬性是空的?因爲他把它稱爲一個對象,這讓我感到困惑。

+0

沒有,他加入了一個名爲'contents'新的財產,分配給它沒有屬性的新對象。 –

+0

'book。[「fat」]''會給你'SyntaxError'。使用點或方括號但不能同時使用它們。 – aga

回答

0

它創建原始book對象的新屬性,該屬性的值設置爲一個新的空對象。

1

查看book變量的定義方式。這是一個對象聲明。 在最後一行,我們添加一個屬性命名內容,併爲其分配對象聲明完全相同的方式,不同的是這其中有沒有財產,因此是一個空對象的書一樣的:{}

1

大括號{ }符號代表的對象文字。

它們之間沒有任何內容的事實意味着指向空對象(從基礎對象繼承)的新對象引用存儲在book.contents屬性中。

0

他正在添加名爲contents的新屬性book,該屬性本身是一個空對象。

下面是當他做出更改以幫助您可視化時的外觀結構。

var book = { 
    topic: "javascript", 
    fat: true, 
    author : "flanagan", 
    contents : {} 
}; 
+0

那麼還有另一種說法,說房產沒有價值嗎?如果只輸入「contents」而不是「contents:{}」 –

+0

您可以通過兩種方式分配對象屬性。 'book [「contents] =''或'book.contents ='。你賦給它的值可以不同於一個函數對一個空對象或數組的一個字符串或數字。 .contents'是一個空白字符串。 –

1

{}創建一個空對象。現在意味着這個對象可以通過book.author="flanagan";

// Both are same 
book.contents = new Object(); 
book.contents = { } ; 
1

在JavaScript中,你可以創建{}符號的對象定義新的屬性相同,稱爲對象字面,你可以添加你什麼都想要到這個對象在未來由點連功能,在第一步的例子:

VAR書= {話題: 「JavaScript的」,脂肪:真正};

書對象有兩個屬性話題脂肪創建,然後這個對象被擴展爲作者 string和內容作爲內部對象,就像我說的你可以使用它來創建空對象(var t = {} //示例); 如果你使用

typeof book.contents // returns "object"

0
<script type="text/javascript"> 

     var book ={ 
      topic: "javascript", 
      fat: true 
     }; 


     book.topic = "javascript"; 
     book.fat = true; 
     book.author = "flanagan"; // creates new property 
     book.contents = {};  // empty object* 
     //The curly bracket { } denotes here an object. 
     //will add a property contents and will contain an empty object 

     alert(book.contents); //it will display [object Object] 

     book.contents.name = 'Success Stories'; 
     //adding propertis to the object contents 
     alert(book.contents.name); 

     /* 
     you can consider it as object inside object 

     objectOuter { 
      property1: value1 
      property2: value2 
      property3: objectInner { 
       property1: value1 
       property2: value2 
      } 
     } 
     */  

    </script>