instanceof
在原型鏈上尋找這個屬性的定義
match
正則匹配字串
Symbol()
Symbol()函式不能用作建構函式,與new關鍵字一起使用。這樣做是為了避免建立符號包裝物件,像使用Boolean、String、Number那樣,他們都支援建構函式且可用於初始化原始值的包裝物件
Symbol.for()
在全域性符號登錄檔中建立並重用符號
Symbol.keyFor()
查詢全域性登錄檔
Object.getOwnPropertyNames() | Object.getOwnPropertySymbols() | Object.getOwnPropertyDescriptors() |
---|---|---|
返回物件例項的常規屬性陣列 | 返回物件例項的符號屬性陣列 | 同時返回常規和符號屬性描述的物件 |
["baz","qux"] | [Symbol(foo),Symbol(bar)] | ["baz","qux",Symbol(foo),Symbol(bar)] |
常用內建符號
這些內建符號也沒有什麼特別之處,他們就是全域性函式Symbol的普通字串屬性,指向一個符號的例項。所有內建符號屬性都是不可寫、不可列舉、不可配置的。
Symbol.asyncIterator
根據ECMAScript規範,該符號作為一個屬性表示一個方法,該方法返回物件預設的AsyncIterator。由for-await-of語句使用。換句話說,這個符號表示實現非同步迭代器API的函式。
for-await-of迴圈會利用這個函式執行非同步迭代操作。迴圈時,他們會呼叫Symbol.asyncIterator為鍵的函式,並期望這個函式會返回一個實現迭代器Api的物件。很多時候,返回的物件是實現該Api的AsyncGenerator
Symbol.replace
該函式接收兩個引數,即呼叫replace()方法的字串例項和替換字串。返回的值沒有限制:
Symbol.search
該符號作為一個屬性表示“一個正則表示式方法,該方法返回字元中匹配正則表示式的索引。”正則表示式的原型上預設有這個函式的定義,因此所有正則表示式例項預設是這個String方法的有效引數
注:參考書籍JavaScript高階程式設計第四版