變量、作用域和內(nèi)存問題
- 變量
基本類型值和引用類型值 - 執(zhí)行環(huán)境和作用域
當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對象的一個(gè)作用域鏈(scope chain) - 作用域鏈
保證對執(zhí)行環(huán)境中有權(quán)訪問的所有變量和函數(shù)的有序訪問。 - 垃圾收集
標(biāo)記清除、引用計(jì)數(shù)
引用類型
- 引用類型
引用類型的值(對象)是引用類型的一個(gè)實(shí)例。
在ECMAScript中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)據(jù)和功能組織在一起。 - Object
- 使用new操作符后跟Object構(gòu)造函數(shù)
- 對象字面量表示法
- Function
函數(shù)是對象。
每個(gè)函數(shù)都是Function類型的實(shí)例,而且都與其他引用類型一樣具有屬性和方法。
函數(shù)名是一個(gè)指向函數(shù)對象的指針。- 函數(shù)聲明語法
- 函數(shù)表達(dá)式定義函數(shù)
- Function構(gòu)造函數(shù)
- 函數(shù)聲明提升
- 函數(shù)內(nèi)部屬性
- arguments
類數(shù)組對象 - arguments的屬性callee
該屬性是一個(gè)指針,指向擁有這個(gè)arguments函數(shù)的對象。 - this
this引用的是函數(shù)執(zhí)行的環(huán)境對象
- arguments
- apply和call
每個(gè)函數(shù)都包含兩個(gè)非繼承而來的方法,用途:在特定的作用域中調(diào)用函數(shù)。
擴(kuò)充函數(shù)作用域
參數(shù)形式不同,apply的參數(shù)是數(shù)組實(shí)例,或者arguments;call的參數(shù)必須逐個(gè)列舉出來。
理解對象
- 對象
ECMA-262把對象定義為"無序?qū)傩缘募?,其屬性可以包含基本值、對象或者函?shù)。" - 屬性類型
- 數(shù)據(jù)屬性
- 訪問器屬性
- Object.defineProperty()
- Object.definePropertys()
- Object.getOwnPropertyDescriptor()