2013-07-20 30 views
6

什麼是「符號」javascript類型as mentioned in this ECMAScript 6 draft specificationJavaScript符號類型:(非字符串對象鍵)

引述規格:

符號類型是一組可以被用作對象屬性的密鑰的所有非字符串的值。

每個可能的符號值都是唯一且不可變的。

符號值有一個名爲[[Private]]的可觀察屬性,其不可變值爲true或false。私有符號是一個符號值,其[[Private]]屬性的值爲true。

我以爲對象鍵只是字符串,我並不孤單。引述this accepted SO answer

...對象鍵總是字符串...

你能解釋一下符號類型是什麼,並證明其使用。我試圖理解規範。

謝謝!

+1

這是ES6規範,不確定,但看看這是否有幫助:https://github.com/dherman/tc39-codex-wiki/blob/master/data/es6/symbols/index.md – elclanrs

回答

6

我以爲對象鍵只有

你是對的字符串,但對EcmaScript的5只這是真的。 ES 6 /和諧是一個新的草案!

我試圖使規範

的感覺這只是一個草案,rapidly changing。如何使用符號以及是否或如何通過任意腳本創建這些符號似乎還沒有解決(通過掃描versions進行更改)。

如果向下滾動到that document盡頭(甚至低於附錄F),你比如會看到一個第8.4.4節:已經搬出了有符號異國對象。它聲明

異國符號對象爲所有必要的內部方法提供了備選定義。

例如,您可以看到它們在section 8.1.7.4 Well-Known Symbols and Intrinsics處使用。對於Symbol的建議用途(以及仍存在的問題/未解決的問題),施工人員請看thesestrawman頁面或this wiki site

+0

謝謝。這是豐富的。 –

0

Symbol是一個新的除了提出爲ECMAScript 6部分的語言:

ECMAScript的™對未來的ECMAScript

工作電流工作™版本繼續作爲先前宣佈的ECMAScript的一部分™「和諧「項目。有關ECMAScript「和諧」當前工作的更多詳細信息,請參閱Wiki。該標準的第六版目前正在制定中,預計2013年12月完成。

+0

用法示例? –

+1

請參閱[8.1.7.4](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-8.1.7.4)內置符號 – Barmar