1三、Javascript——對象

一、對象+類+實例是什麼 

 

(1)對象

  ECMA-262 把對象(object)定義爲「屬性的無序集合,每一個屬性存放一個原始值、對象或函數」。嚴格來講,這意味着對象是無特定順序的值的數組。數組

  儘管 ECMAScript 如此定義對象,但它更通用的定義是基於代碼的名詞(人、地點或事物)的表示。瀏覽器

(2)類

  每一個對象都由類定義,能夠把看作對象的配方類不只要定義對象的接口(interface)(開發者訪問的屬性和方法),還要定義對象的內部工做(使屬性和方法發揮做用的代碼)。編譯器和解釋程序都根據類的說明構建對象。類是在對象之上的抽象,對象則是類的具體化,是類的實例。函數

  類也叫作引用類型,其實在 ECMAScript 中,咱們不能訪問對象的物理表示,只能訪問對象的引用。每次建立對象,存儲在變量中的都是該對象的引用,而不是對象自己。post

(3)實例

  程序使用類建立對象時,生成的對象叫做類的實例(instance)。對類生成的對象的個數的惟一限制來自於運行代碼的機器的物理內存。每一個實例的行爲相同,但實例處理一組獨立的數據。由類建立對象實例的過程叫作實例化(instantiation)。ui

  其實,ECMAScript 並無正式的類。相反,ECMA-262 把對象定義描述爲對象的配方。這是 ECMAScript 邏輯上的一種折中方案,由於對象定義其實是對象自身。即便類並不真正存在,咱們也把對象定義叫作,由於大多數開發者對此術語更熟悉,並且從功能上說,二者是等價的。spa

 二、對象的分類

  在 ECMAScript 中,全部對象並不是同等建立的。操作系統

  通常來講,能夠建立並使用的對象有三種:本地對象、內置對象和宿主對象。對象

(1)本地對象(native object)

  本地對象定義爲:「獨立於宿主環境的 ECMAScript 實現提供的對象」。對於ECMAScript來講,宿主環境就是操做系統和瀏覽器了。blog

  本地對象就是ECMA-262定義的類(引用類型),在使用時,須要建立實例,也就是要new。包括:接口

  Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、

TypeError、URIError

(2)內置對象(built-in object)

  內置對象定義爲:「由 ECMAScript 實現提供的、獨立於宿主環境的全部對象,在 ECMAScript 程序開始執行時出現」,也就是說開發者沒必要明確實例化內置對象,它已被實例化了,直接調用就能夠了,也就是不要new。內置對象也屬於本地對象。

  ECMAScript只定義了兩個內置對象,也就是Global對象和Math對象。

  Global對象是ECMAScript中最特別的對象,由於實際上它根本不存在!在ECMAScript中,不存在獨立的函數,全部函數都必須是某個對象的方法。相似於isNaN()、parseInt()和parseFloat()方法等,看起來都是函數,而實際上,它們都是Global對象的方法。並且Global對象的方法還不止這些。有關Global對象的具體方法和屬性請看這裏:JavaScript 全局對象參考手冊

注意:

  一、有的地方把本地對象叫「內置對象」,內置對象叫「單體內置對象(Singleton Built-in Objects)」,意思差很少,這二者都是由ECMAScript自己實現提供的;

  二、內置對象是在引擎初始化階段就被建立好的對象,是本地對象的一個子集,而本地對象除此以外還包括了一些在運行過程當中動態建立的對象。

(3)宿主對象(host object)

  ECMAScript中的「宿主」就是咱們網頁的運行環境,即「操做系統」和「瀏覽器」。全部非本地對象都是宿主對象(host object),即由 ECMAScript 實現的宿主環境提供的對象。全部 BOM 和 DOM 對象都是宿主對象。

  其實,ECMAScript官方未定義的對象都屬於宿主對象,由於其未定義的對象大多數是咱們經過ECMAScript程序建立的對象。

總結:

  那些官方定義好了的對象就叫本地對象。內置對象是本地對象的一種,其只包含Global對象和Math對象。而宿主對象則是那些官方未定義,咱們本身構建的對象加上DOM和BOM對象。

相關文章
相關標籤/搜索