Tec*_*lvr 6 javascript arrays object call prototype-programming
我正在查看代码,以确定对象是否是一个数组,我发现了这个答案.
代码工作正常,但我无法理解它是如何进行比较的 [object Array]
我试图得到它typeof Array,但这是一个错误.所以我对这段代码感到困惑"
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
Run Code Online (Sandbox Code Playgroud)
我很想知道toString.call( _ON_AN_ARRAY_ )对Object 的方法调用是如何正确获取Array对象的类型的.
从技术上讲,数组是一个对象,所以当你这样做时,typeof arrayVar你会得到object,但它并不特定于对象的类。
然而当你看一个对象时prototype.toString()它也会返回“object”,但是当你查看一个对象原型并传入一个对象时,它会返回该对象和对象的类。
你可以在ECMAScript5规范中看到(\xc2\xa715.2.4.2)它对 Object.prototype.toString 方法的说明:
\n\n\n\n\n当调用toString方法时,会执行以下步骤:
\n\n\n
\n- 如果 this 值未定义,则返回“[object Undefined]”。
\n- 如果 this 值为 null,则返回“[object Null]”。
\n- 令 O 为调用 ToObject 并传递 this 值作为参数的结果。
\n- 令 class 为 O 的 [[Class]] 内部属性的值。
\n- 返回由三个字符串“[object”、class 和“]”连接而成的字符串值。
\n
最后一个是“如何”的答案。
\n