键入检查数组

时间:2013-10-08 08:50:21

标签: javascript typechecking duck-typing

当我这样做时:typeof([])它会返回object

我听说编辑JavaScript内置类型的原型并不是真的可以接受。

但是,如果我这样做:Array.prototype.isArray = true;然后执行以下工作:

var arr = [];
var obj = {};

if (arr.isArray)
{
    console.log("Array");
}
else
{
    console.log("Not array");
}

if (obj.isArray) // undefined
{
    console.log("Array");
}
else
{
    console.log("Not array");
}

或者这仍然不被接受?什么是更好的解决方法?

2 个答案:

答案 0 :(得分:0)

您可以使用

yourThing.constructor === Array

如果true是数组,则返回yourThing

因此您无需更改Array的原型。 Modifying objects you don't own is widely seen as bad practice

答案 1 :(得分:0)

您可以使用instanceofMDN Documentation):

var arr = [];
if (arr instanceof Array) {
  console.log('this is an array');
}