-
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]]
的字符串值,用于检测内建对象的类型。值得注意的是,这一方法只对内建对象有效,对宿主对象等其余类型的对象则不具备可信度。