-
01.若是
this
的值爲undefined
,則返回字符串"[object Undefined]"
ui -
02.若是
this
的值爲null
,則返回字符串"[object Null]"
this -
03.使用
O
表示ToObject(this)
的值prototype -
04.使用
isArray
表示IsArray(O)
的值code -
05.若是
isArray
不是正常值(好比拋出錯誤),則中斷執行對象 -
06.若是
isArray === true
,則builtinTag = "Array"
,以後執行第 16 步ip -
07.若是
O
是一個exotic
字符串對象,則builtinTag = "String"
,以後執行第 16 步開發 -
08.若是
O
擁有內部屬性[[ParameterMap]]
,則builtinTag = "Arguments"
,跳到第 16 步字符串 -
09.若是
O
擁有內部方法[[Call]]
,則builtinTag = "Function"
,跳到第 16 步get -
10.若是
O
擁有內部屬性[[ErrorData]]
,則builtinTag = "Error"
,跳到第 16 步it -
11.若是
O
擁有內部屬性[[BooleanData]]
,則builtinTag = "Boolean"
,跳到第 16 步 -
12.若是
O
擁有內部屬性[[NumberData]]
,則builtinTag = "Number"
,跳到第 16 步 -
13.若是
O
擁有內部屬性[[DateValue]]
,則builtinTag = "Date"
,跳到第 16 步 -
14.若是
O
擁有內部屬性[[RegExpMather]]
,則builtinTag = "RegExp"
,跳到第 16 步 -
15.若是第 6 ~ 14 步都不符合,則
builtinTag = "Object"
,跳到第 16 步 -
16.使用
tag
表示Get (O, @@toStringTag)
的值 -
17.若是
tag
不是正常值,則中斷執行 -
18.若是
Type(tag)
不是一個字符串,則tag = builtinTag
-
19.返回一個
"[object" + tag + "]"
形式的字符串
開發者喜歡使用該方法獲取內部屬性
[[Class]]
的字符串值,用於檢測內建對象的類型。值得注意的是,這一方法只對內建對象有效,對宿主對象等其餘類型的對象則不具備可信度。