- 如果 Type(V) 不是引用 , 返回 V。
- 令 base 為調(diào)用 GetBase(V) 的返回值。
- 如果 IsUnresolvableReference(V), 拋出一個(gè) ReferenceError 異常。
- 如果 IsPropertyReference(V), 那么如果 HasPrimitiveBase(V) 是 false, 那么令 get 為 base 的 [[Get]] 內(nèi)部方法 , 否則令 get 為下面定義的特殊的 [[Get]] 內(nèi)部方法。將 base 作為 this 值,傳遞 GetReferencedName(V) 為參數(shù),調(diào)用 get 內(nèi)部方法,返回結(jié)果。
- 否則 , base 必須是一個(gè) environment record。
- 傳遞 GetReferencedName(V) 和 IsStrictReference(V) 為參數(shù)調(diào)用 base 的 GetBindingValue( 見(jiàn) 10.2.1) 具體方法,返回結(jié)果。
GetValue 中的 V 是原始基值的 屬性引用 時(shí)使用下面的 [[Get]] 內(nèi)部方法。它用 base 作為他的 this 值,其中屬性 P 是它的參數(shù)。采用以下步驟:
- 令 O 為 ToObject(base)。
- 令 desc 為用屬性名 P 調(diào)用 O 的 [[GetProperty]] 內(nèi)部方法的返回值。
- 如果 desc 是 undefined,返回 undefined。
- 如果 IsDataDescriptor(desc) 是 true,返回 desc.[[Value]]。
- 否則 IsAccessorDescriptor(desc) 必須是 true,令 getter 為 desc.[[Get]]。
- 如果 getter 是 undefined,返回 undefined。
- 提供 base 作為 this 值,無(wú)參數(shù)形式調(diào)用 getter 的 [[Call]] 內(nèi)部方法,返回結(jié)果。
上述方法之外無(wú)法訪(fǎng)問(wèn)在第一步創(chuàng)建的對(duì)象。實(shí)現(xiàn)可以選擇不真的創(chuàng)建這個(gè)對(duì)象。使用這個(gè)內(nèi)部方法給實(shí)際屬性訪(fǎng)問(wèn)產(chǎn)生可見(jiàn)影響的情況只有在調(diào)用訪(fǎng)問(wèn)器函數(shù)時(shí)。
更多建議: