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

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

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

 

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

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

對(duì)象和類的關(guān)系:在JavaScript中,對(duì)象和類沒(méi)有任何關(guān)系。這是因?yàn)?span style="color:#FF9900;">ECMAScript中根本就沒(méi)有類的概念,它的對(duì)象與其他基于類的語(yǔ)言中的對(duì)象是不同的

 對(duì)象和引用類型的關(guān)系:對(duì)象和引用類型并不是等價(jià)的,因?yàn)槊總€(gè)對(duì)象都是基于一個(gè)引用類型創(chuàng)建的

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

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

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

 

網(wǎng)友評(píng)論