ECMAScript5學習筆記-第1章至第9章

詳細參考:http://yanhaijing.com/es5/#77算法

8.6--Object類型測試

Object:一個屬性的集合。每一個屬性既能夠是一個命名的數據屬性,也能夠是一個命名的訪問器屬性,或是一個內部屬性。es5

兩種帶名字的訪問器屬性(非內部屬性):get(取值) 和 put(賦值)。prototype

8.6.1--Propertyorm

Attributes用於定義和解釋命名屬性properties的狀態。命名的數據屬性由一個名字關聯到一系列特性(attributes)。對象

全部對象(包括宿主對象)必須實現下表中的全部內部屬性。blog

全部對象都有一個叫作[[prototype]]的內部屬性,此對象的值是null或一個對象,而且它用於實現繼承。一個原生屬性是否能夠把宿主對象做爲它的[[Prototype]]取決於實現。全部[[prototype]]鏈必須是有限長度(即從任何對象開始,遞歸訪問[[prototype]]內部屬性必須最終到頭,而且值是null)。從[[prototype]]對象繼承來的命名數據屬性(做爲子對象的屬性可見)是爲了get請求,但沒法用於put請求。命名訪問器屬性會把get和put請求都繼承。繼承

本規範中的每種內置對象都定義了[[Class]]內部屬性的值。內部屬性的值能夠是除了"Arguments","Array","Boolean","Date","Error","Function","JSON","Math","Number","Object","RegExp","String"的任何字符串。[[Class]]內部屬性的值用於內部區分對象的種類。本規範中除了經過Object.prototype.toString沒有提供任何手段使程序訪問此值。遞歸

 

8.7引用規範類型ip

一個引用是個已解決的命名綁定。一個引用由三部分組成,基值,引用名稱和布爾值 嚴格引用標誌。基值是undefined,一個Object,一個Boolean,一個String,一個Number,一個environment record中的任意一個。基值是undefined表示此引用能夠不解決一個綁定。引用名稱是一個字符串。

 

 8.7.1 GetValue(v)

 8.7.2 PutValue(v,w)

 

本規範中使用如下抽象操做接近引用的組件:

  • GetBase(V)。 返回引用值 V 的基值組件。
  • GetReferencedName(V)。 返回引用值 V 的引用名稱組件。
  • IsStrictReference(V)。 返回引用值 V 的嚴格引用組件。
  • HasPrimitiveBase(V)。 若是基值是 Boolean, String, Number,那麼返回 true。
  • IsPropertyReference(V)。 若是基值是個對象或 HasPrimitiveBase(V) 是 true,那麼返回 true;不然返回 false。
  • IsUnresolvableReference(V)。 若是基值是 undefined 那麼返回 true,不然返回 false。

 

8.9 完結規範類型

完結類型的值是由三部分組成:形如(type,value,target)。其中type是normal,break,continue,return,throw之一。value是任何ECMAScript語言值或empty,target是任何ECMAScript標識符或empty。

 

8.10  屬性描述符及屬性標識符規範類型

 8.10.1 IsAccessorDescriptor(Desc)

 8.10.2 IsDataDescriptor(Desc)

 8.10.3 IsGenericDescriptor(Desc)

 8.10.4 FromPropertyDescriptor(Desc)

 8.10.5 ToPropertyDescriptor(Obj)

 

8.12 對象內部方法的算法

 8.12.1 [[GetOwnProperty]](P)

 8.12.2 [[GetProperty]](P)

 8.12.3 [[Get]](P)

 8.12.4 [[CanPut]](P)

 8.12.5 [[Put]](P,V,Throw)

 8.12.6 [[HasProperty]](P)

 8.12.7 [[Delete]](P,Throw)

 8.12.8 [[DefaultValue]](hint)

 8.12. 9[[DefineOwnProperty]](P,Desc,Throw) 

 

9  類型轉換與測試

轉換運算符是多態的 --它們能夠接受任何ECMAScript語言類型的值,可是不接受規範類型。

9.1   ToPrimitive--接受一個值,和一個可選的指望類型作參數。

9.2   ToBoolean

9.3   ToNumber

9.4   ToInteger(先調用ToNumber,NaN-->+0;+0,-0,+∞,-∞-->Result(1);計算sign(Result(1) * floor(abs(Result(1)))),返回Result(4))

9.5   ToInt32:(32位有符號整數)

9.6   ToUint32:(32位無符號整數)

9.7   ToUint16:(16位無符號整數)

9.8   ToString

9.9   ToObject

9.10  CheckObjectCoercible:(在其參數沒法用ToObject轉換成對象的狀況下拋出一個異常)

9.11  IsCallable:(肯定其必須是ECMAScript語言值的參數是不是一個可調用對象)

9.12  SameValue算法:(SameValue(x,y))

相關文章
相關標籤/搜索