JavaScript中屬性和特性是完全不同的兩個概念,這里我將根據(jù)自己所學(xué),來深入理解JavaScript中的屬性和特性。

主要內(nèi)容如下:

  • 理解JavaScript中理解對象的本質(zhì)、理解對象與類的關(guān)系、對象與引用類型的關(guān)系
  • 對象屬性如何進(jìn)行分類
  • 屬性中特性的理解

 

第一部分:理解JavaScript中理解對象的本質(zhì)、理解對象與類的關(guān)系、對象與引用類型的關(guān)系

對象的本質(zhì):ECMA-262把對象定義為:無序?qū)傩缘募?,其屬性可以包含基本值、對象或者函?shù)。即對象是一組沒有特定順序的值,對象的每個屬性或方法都有一個名字,而這個名字都映射到一個值。故對象的本質(zhì)是一個散列表:其中是一組名值對,值可以是數(shù)據(jù)或函數(shù)。

對象和類的關(guān)系:在JavaScript中,對象和類沒有任何關(guān)系。這是因為ECMAScript中根本就沒有類的概念,它的對象與其他基于類的語言中的對象是不同的。

 對象和引用類型的關(guān)系:對象和引用類型并不是等價的,因為每個對象都是基于一個引用類型創(chuàng)建的。

第二部分:對象屬性如何進(jìn)行分類

由構(gòu)造函數(shù)或?qū)ο笞置媪糠椒▌?chuàng)建的對象中具有屬性和方法(只要提到屬性和方法,它們一定是屬于對象的;只要提到對象,它一定是具有屬性和方法的(自定義除外)),其中屬性又可分為數(shù)據(jù)屬性和訪問器屬性,他們的區(qū)別如下:

  • 數(shù)據(jù)屬性一般用于存儲數(shù)據(jù)數(shù)值,訪問器屬性不包含數(shù)據(jù)值
  • 訪問器屬性多用于get/set操作

 

網(wǎng)友評論