【问题标题】:Type checking for array [duplicate]数组的类型检查[重复]
【发布时间】:2013-10-15 02:33:01
【问题描述】:

当我这样做时: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");
}

或者这仍然不能接受?有什么更好的方法来解决这个问题?

【问题讨论】:

    标签: javascript typechecking duck-typing


    【解决方案1】:

    你可以使用

    yourThing.constructor === Array
    

    如果yourThing 是一个数组,则返回true

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

    【讨论】:

      【解决方案2】:

      您可以使用instanceof (MDN Documentation):

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

      【讨论】:

        猜你喜欢
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 2020-04-27
        • 2013-10-18
        • 1970-01-01
        • 2011-01-10
        • 1970-01-01
        相关资源
        最近更新 更多