struct和dict有什么区别?

时间:2016-04-20 02:10:00

标签: javascript types google-closure-compiler google-closure-library

这两个术语在documentation中经常使用。 struct的概念很容易理解,即对象的属性是固定的,但是我们有dict,它可以有任意数量的属性,那么它与普通Object有何不同?为什么需要一个单独的类型的功能?

1 个答案:

答案 0 :(得分:1)

我认为关键区别在于documentation page

  

通过使用@struct,您知道编译器将安全地重命名所有属性,因为您不能使用括号访问。通过使用@dict,您知道编译后属性将具有相同的名称。

(理解闭包编译器的关键是properties accessed with bracket notation are not renamed)。

使用闭包编译器会以您指定的方式限制JavaScript的使用。您正在告诉编译器在编写代码时会发出警告,该代码会破坏您使用@struct@dict等注释实施的限制。

@dict确实像你说的那样“正常Object”。通过使用@dict,您告诉编译器您将要向对象添加属性,并且您不希望将这些属性重命名为最小名称。

相比之下,@struct通常用于您不关心编译器重命名属性的类。您也不希望将属性添加到此类对象中,因此如果您这样做,则应该是错误。

顺便说一下,page about struct and dict的例子在我看来有点难以理解,所以如果你对该页面上的任何内容感到困惑,可以随意提出更多问题。