ECMAScript 語言規範中的術語定義

如下是基於 ECMAScript 5.1 版本 4.3 節內容作的翻譯,最後補充了與 ES6 中的術語定義的區別說明。由於規範中對術語的定義很嚴謹,因此有時你們搞不太懂的一些術語名詞,能夠在規範中的找到明肯定義。數組

4.3 術語定義

本文檔使用了下列術語和定義。函數

4.3.1 類型

一類數據的集合this

4.3.2 原始值

是如下類型之一的成員:未定義(Undefined)、空(Null)、數字(Number)、布爾(Boolean) 、字符串(String)。prototype

注:原始值直接表明語言實現的最底層基準。翻譯

4.3.3 對象

對象類型(Object type)的成員。3d

注:對象是屬性的集合,而且有一個原型對象。原型多是空值。code

4.3.4 構造器

用來建立和初始化對象的函數對象。對象

注:構造器的「prototpe」屬性是用來實現繼承和共享屬性的原型對象。繼承

4.3.5 原型

爲其餘對象提供共享屬性的對象。ip

注:當使用構造器建立對象時,爲了解析屬性引用,對象隱式引用了構造器的「prototpe」屬性。構造器的「prototpe」屬性能夠經過程序表達式 constructor.prototype 引用。全部引用同一原型的對象,經過繼承,都能共享添加到原型上的屬性。另外,可使用內置的 Object.create 函數,爲建立的新對象顯式指定原型。

4.3.6 原生對象

ECMAScript 實現中,並不是由宿主環境,而是徹底經過本規範定義其語義的對象。

注:本規範中定義了標準原生對象。一些原生對象是內置的,其餘原生對象則是在 ECMAScript 程序執行期間構建的。

4.3.7 內置對象

由 ECMAScript 實現提供的、獨立於宿主環境的、在 ECMAScript 程序執行之初就存在的對象。

注:本規範中定義了標準內置對象,ECMAScript 實現能夠指定和定義其餘的。每一個內置對象都是原生對象。_內置構造器_既是內置對象,也是構造器。

譯者注:「獨立於宿主環境」表示宿主環境無關的,且每一個環境都必須實現的對象。

4.3.8 宿主對象

由宿主環境提供的、用於完善 ECMAScript 執行環境的對象。

注:一個對象,不是原生對象,就是宿主對象。

4.3.9 undefined

變量沒賦值時,使用的一個原始值。

4.3.10 未定義類型

僅包含惟一成員 undefined 的類型。

4.3.11 null

對象值故意缺席時,使用的一個原始值。

4.3.12 空類型

僅包含惟一成員 null 的類型。

4.3.13 布爾值

布爾類型的成員。

注:一共只有兩個布爾值,truefalse

4.3.14 布爾類型

由原始值 truefalse 組成的類型。

4.3.15 布爾對象

對象類型的成員,是標準內置構造器 Boolean 的一個實例。

注:布爾對象使用 Boolean 構造器在 new 表達式中建立,建立時須要提供一個布爾值做爲參數。此參數會成爲生成對象裏的一個內部屬性的值。一個布爾對象能夠強制轉換成布爾值。

4.3.16 字符串值

是一個原始值,由零個或多個 16 位無符號整數組成的有限有序序列。

注:字符串值是字符串類型的成員。序列中的每一個整數值一般表明 UTF-16 文本的單個 16 位單元。對於其值,ECMAScript 只規定了必須是 16 位無符號整數,除此以外沒有任何其餘的限制和要求。

4.3.17 字符串類型

全部可能的字符串值的集合。

4.3.18 字符串對象

對象類型的成員,是標準內置構造器 String 的一個實例。

注:字符串對象使用 String 構造器在 new 表達式中建立,建立時須要提供一個字符串值做爲參數。此參數會成爲生成對象裏的一個內部屬性的值。當把 String 構造器做爲函數調用時,可將一個字符串對象強制轉換成字符串值。

4.3.19 數值

是一個原始值,使用雙精度 64 位二進制格式的 IEEE754 值表示。

注:數值是數字類型的成員,是數字的直接表示方式。

4.3.20 數字類型

全部可能的數值的集合。包括特殊的「Not-a-Number」(NaN)值、正無窮和負無窮。

4.3.21 數字對象

對象類型的成員,是標準內置構造器 Number 的一個實例。

注:數字對象使用 Number 構造器在 new 表達式中建立,建立時須要提供一個數值做爲參數。此參數會成爲生成對象裏的一個內部屬性的值。當把 Number 構造器做爲函數調用時,可將一個數字對象強制轉換成數值。

4.3.22 Infinity

正無窮的數值表示。

4.3.23 NaN

表明 IEEE 754 裏表示「Not-a-Number」的數值。

4.3.24 函數

對象類型的成員,是標準內置構造器 Function 的一個實例。能夠做爲子程序被調用。

注:函數除了命名屬性,還包含可執行代碼、狀態,用來肯定被調用時的行爲。函數的代碼能夠不用 ECMAScript 寫。

譯者注:「函數的代碼能夠不用 ECMAScript 寫」表示函數的代碼實現不限於使用 ECMAScript。

4.3.25 內置函數

做爲函數的內置對象。

注:好比 parseIntMath.exp 都是內置函數。一個實現能夠提供本規範沒有描述的、依賴於實現的內置函數。

譯者注:這裏把 Math.exp 說成內置函數並不嚴謹,歸爲內置方法更合適,也更符合直覺一點。

4.3.26 屬性

對象的一部分,用來關聯名(name)和值(value)。

注:根據屬性的特性,屬性值能夠表現爲直接的數據值(一個原始值、對象或函數對象)或間接的一對訪問器函數。

4.3.27 方法

做爲屬性值的函數。

注:當一個函數是做爲對象方法調用時,函數內部的 this 指向這個對象。

4.3.28 內置方法

做爲內置函數的方法。

譯者注:這個定義有些莫名其妙。嚴謹地說成是 「做爲內置對象屬性值的函數」 更合適些。

首先內置方法自己確定是函數,並且要定義在一個對象上。以 Math.exp 舉例,就是個內置方法;但若是從另外一個角度,把 Math 當作是命名空間,那麼 Math.exp 就表示這個命名空間下的內置函數,這也是上面把它歸爲「內置函數」的緣由。

一樣的例子還有,JSON.stringifyJSON.parse 兩個方法。

4.3.29 特性

定義一個屬性某些特徵的內部值。

4.3.30 自身屬性

直接定義在對象上的屬性。

4.3.31 繼承屬性

不是對象的自身屬性,而是對象原型上的屬性(自身或繼承的)。


補充:ES6 中的術語定義

ES6/ECMAScript 2015 中本節的術語定義與 ES5.1 大致相同。術語個數調整至 35 個,總結爲:增長 4 個,修改 2 個,刪除了 1 個。

下面詳細列明。

增長的 4 個

普通對象(ordinary object)

是這樣一個對象——擁有每一個對象都有的基本內部方法(essential internal methods),且每一個方法都是默認的行爲表現。

獨特對象(exotic object)

注:一個對象不是普通對象,就是獨特對象。

是這樣一個對象——沒有擁有每一個對象都有的基本內部方法;或擁有但有一個或多個方法的行爲表現不是默認的。

Symbol 值

是一個原始指,對象可使用它做爲屬性鍵的值。它屬於一種非字符串類型的、能標識惟一性的 Symbol 類型。

譯者注:今後,對象屬性鍵的值能夠有兩種選擇,一種使用字符串,一種使用 Symbol 值。

Symbol 類型

全部可能的 Symbol 值的集合。

Symbol 對象

對象類型的成員,是標準內置構造器 Symbol 的一個實例。

譯者注:好笑的是,做爲開發人員咱們並不能使用 new Symbol() 的方式建立一個 Symbol 對象。

由於規範中定義,若是以 new 的方式調用 Symbol 構造器,會拋出 TypeError 類型錯。

咱們只能經過某些方式,證實確實是有「Symbol 對象」的——在 Symbol 值上調用 Symbol.prototype 對象上共享的方法,好比 toString()valueOf() 等。

修改的 2 個

原始值

ES6 引入了一個新的原始類型 Symbol。

是如下類型之一的成員:未定義(Undefined)、空(Null)、數字(Number)、布爾(Boolean) 、字符串(String)、Symbol(Symbol)。

原生對象 -> 標準對象(standard objec)

由本規範定義其語義的對象。

譯者注:規範試圖模糊「原生」的概念,是否表示宿主環境裏提供的 DOM、BOM 等 API 對象也能夠理解爲是原生對象了?

刪除的 1 個

宿主對象

相關連接

(完)

相關文章
相關標籤/搜索