1. 程式人生 > 其它 >課堂筆記 2021.8.27 JS基礎 下

課堂筆記 2021.8.27 JS基礎 下

JS基礎 下

JS原始型別 (3)

Symbol ES6及之後的版本中引入的新原始資料型別。Symbol可以建立唯一標識。

  作為物件的key

  Symbol.for

  Symbol.keyFor //得到一個物件的key

const id = Symbol('foo'); //建立的是區域性的Symbol,區域性的Symbol即使傳同樣的key,它們之間也不會相等。

而const foo = Symbol.for(foobar); //建立的是全域性的Symbol

私有屬性,新的語言標準中private field有些不理想,所以也可以採用Symbol來定義私有屬性。

內建Symbol,ES6內建了一些有用的Symbol,可以用來控制物件的一些內部行為

  Symbol.iteratior

  Symbol.toPrimitive

  Symbol.toStringTag

BigInt,是JavaScript新的原始型別,可以精確表示大於2^53-1的整數

  BigInt字面量:數字+n 

  BigInt運算:不能與Number直接進行運算

  顯式型別轉換:BigInt與Number相互轉換

JS函式(1)

通過function關鍵字可以宣告一個函式。

  函式宣告沒有塊級作用域

  函式宣告會被提升(hoist)

函式表示式,可以將函式作為物件使用

  函式表示式不會被提升(hoist)

  函式表示式可以具名也可以匿名

  函式表示式具名只能在內部訪問

箭頭函式,函式表示式的簡寫

  單行的箭頭函式可以省略花括號和return

  只有一個引數的箭頭函式可以省略圓括號

  箭頭函式不能具名,也沒有this上下文

執行上下文(閉包),函式由執行上下文,執行時會產生“閉包”

  閉包是執行時由函式呼叫產生的

  通過閉包可訪問執行上下文中的資料

  如果產生閉包的引用被銷燬,閉包被銷燬

總結

  函式宣告無塊級作用域,存在hoist

  函式表示式可具名或匿名,具名只能內部使用

  箭頭函式是函式表示式簡寫

  函式由執行上下文,執行時會產生“閉包”

JS函式(2)

  this上下文

  動態繫結

  Function類

this上下文

在函式體內部,可以通過this物件訪問函式呼叫this上下文。所謂函式呼叫的this上下文,是指函式的實際呼叫者物件。

setTimeout是直接呼叫sayHelloTo,而沒有通過person去呼叫,所以函式拿不到person中this.lastName這個東西,所以出現了undefined

箭頭函式

箭頭函式沒有this上下文,利用這一特性,可以讓箭頭函式訪問外部作用域的this上下文。

動態繫結

this上下文在函式呼叫時可以動態指定,方法是通過函式的call、apply或bind方法來呼叫。

Function類

函式是Function類的例項,我們可以用Function類動態建立函式物件。

總結

  函式的this上下文預設是它的實際呼叫者

  箭頭函式沒有this上下文,所以可以訪問外部的this

  我們可以通過call、apply、bind動態繫結

  函式是Function類的例項,可以動態建立

JS物件(1)

構造

物件是最基礎的複合型別,它是一組屬性的集合。物件有幾種構造方式。

  通過字面量構造

  通過構造器構造

  通過原型構造

構造器與類

  JavaScript是面向物件的程式語言,物件預設的構造器是Object,我們可以定義函式作為構造器或者定義class。

總結

  物件構造:字面量、構造器、原型

  函式構造器與class

  屬性定義:識別符號、字串、表示式

  屬性訪問:. 和 [ ]

  屬性的遍歷和增改刪

  原型機制

  原型鏈和類繼承

JS物件(2)