2013-11-01 40 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>