2017-01-21 318 views
1

在閱讀Principles of Object-Oriented JavaScript我碰到上的免費章節page 32結束下面一行來到筆者的網站:[設置]對象的屬性

當物業首次添加到對象,JavaScript使用一個 內部方法在對象上調用[[Put]]。 [[Put]]方法 在對象中創建一個點以存儲屬性。

將新值分配給現有屬性時,會發生稱爲[[Set]]的單獨 操作。該操作將使用新操作替換該屬性的當前值。

筆者這裏談改變這恰好命名的數據屬性的價值因所謂的[設置]對象的內部屬性。 我看着ECMA 5,發現[[Get]],[[Put]]但沒有這樣的屬性[[Set]]。但[[Set]]屬性可用於對象中的命名訪問器。

我的問題是有沒有任何對象的內部屬性叫[[Set]]?如果不是,那麼數據屬性值的變化如何發生?

+0

ES5是古老的,最新的是ES2016,今年我們將獲得ES2017。 – Oriol

回答

2

這是因爲[將]更名爲[設置]中的ECMAScript 6

具體來說,從Early ES6 Working Drafts

  • 修訂版12(2012年11月22日草稿)

    [[]獲取] [把[]]次/用[GetP]/[SETP]。

  • 啓14(2013年3月8日草案)

    重命名[[GetP]]至[[獲取]]和[[SETP]]至[[SET]]

在ES5中有[[Put]]內部方法,沒有[[Set]]。在ES6中有一個[[Set]]內部方法,沒有[[Put]]。或多或少,他們的行爲是一樣的。

+0

我已經更新了這個問題。請看一看。他也談論[[put]]。 –

+1

@BreakingBenjamin我認爲文本的作者被ES5和ES6之間的差異弄糊塗 – Oriol

+0

因此,根據ES6的目的(設置和更改)使用[[set]]? –