先前在做其他主題的之後,都會碰到Constructor Properties,建構式也就是它們的原型,這些原型從哪來的,讓我相當的好奇,所以好奇的鯊魚就去了解一下這些原型從何而來了,也順便介紹一下Global Object(全域物件)。
The Global Object (全域物件)是什麼,
他是一個執行環境,再任何code執行之前就會被建立好。
也就是JavaScript的預設環境,裡面有很多預設的Properties
沒有建構式,不能用new來建立一個新的Global Object
也沒辦法透過function去呼叫他
所以有的屬性都是由瀏覽器環境決定,不過現今瀏覽器差異不大
所以這個差異也越來越小。
The Global Object (全域物件)內可分為四類
globalThis
Infinity
NaN
undefined
eval ( x )
用字串去執行JavaScript,但是有極大的風險,因為它會調用使用者權限去執行代碼,如果遭人惡意使用,會再自身的網頁/計算機運行惡意代碼,被窺視一些私人訊息。
isFinite ( number )
檢驗number是否為無限,並用Boolean值回傳。
isNaN ( number )
檢驗NaN是否為無限,並用Boolean值回傳。
因為NaN的特性 NaN 不等於任何東西,包含他自己,所以需要一個Function去檢驗NaN。
跟Number.isNaN ( number )一樣
parseFloat ( string )
跟**Number.parseFloat ( string )**一樣
將字串轉成數字,比較特別是當字串是數字+其他非數字的組合,會將數字提出,非數字的部分捨棄(數字一定要在前面),如果不能轉換則會回傳false。
parseInt ( string, radix )
跟**Number.parseInt ( string, radix )**一樣
將string轉換成10進位的整數,radix表示string使用的進位,沒有則視為10進位。
URI Handling Functions
URI(Uniform Resource Identifiers統一資源標識符)是標識資源(例如網頁或文件)和在 Internet 上訪問它們的傳輸協議(例如 HTTP 或 FTP)的字符串。
除了幾個特定函式之外,ECMAScript language本身是不會處理URI的內容。
decodeURI ( encodedURI )
decodeURIComponent ( encodedURIComponent )
encodeURI ( uri )
encodeURIComponent ( uriComponent )
這些建構式,就是物件的原型,每個物件他背後的所有屬性,都是先在全域中建立好的,當我們建立一個新物件,就會繼承這些原型的內容,所以我們才能使用這些物件屬性,也就是MDN提到的Properties跟Methods,而這些原型也包含了基本型別的原型,當基本型別要使用這些Properties時,就會自動Object()物件化。
其中包含了下面的40多種,一些常用的會在日後拉出來個別做說明。
AggregateError ( . . . )
Array ( . . . )
ArrayBuffer ( . . . )
BigInt ( . . . )
BigInt64Array ( . . . )
BigUint64Array ( . . . )
Boolean ( . . . )
DataView ( . . . )
Date ( . . . )
Error ( . . . )
EvalError ( . . . )
FinalizationRegistry ( . . . )
Float32Array ( . . . )
Float64Array ( . . . )
Function ( . . . )
Int8Array ( . . . )
Int16Array ( . . . )
Int32Array ( . . . )
Map ( . . . )
Number ( . . . )
Object ( . . . )
Promise ( . . . )
Proxy ( . . . )
RangeError ( . . . )
ReferenceError ( . . . )
RegExp ( . . . )
Set ( . . . )
SharedArrayBuffer ( . . . )
String ( . . . )
Symbol ( . . . )
SyntaxError ( . . . )
TypeError ( . . . )
Uint8Array ( . . . )
Uint8ClampedArray ( . . . )
Uint16Array ( . . . )
Uint32Array ( . . . )
URIError ( . . . )
WeakMap ( . . . )
WeakRef ( . . . )
WeakSet ( . . . )
大部分的類別,都有一個Constructor Properties規範他們的基礎行動與運作,
但是有部分的類別,沒有Constructor Properties原型的,就是下面四種,這四種也都是靜態型別,我對它們的理解如下。
越是介紹到後面的東西,就越會發現自己少了些什麼,這時鯊魚就來亡羊補牢了,希望不會太晚。
參考資料