【问题标题】:Is array a special case of an object in JavaScript?数组是 JavaScript 中对象的特例吗?
【发布时间】:2016-06-25 08:08:30
【问题描述】:

我正在使用此代码。现在,为了检查,我打印了 typeof arr 并在控制台中显示了“object”。虽然,我在一开始就将 arr 声明为一个数组。它是否已转换为对象? 代码如下:

<script>
function getDomainsOfEmails(text) {
    var arr=new Array;
    var regex= /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}/g;
    var matches= text.match(regex);
    for(var i=0; i<matches.length; i++){
        arr[i]=matches[i].match(/@[a-z0-9.-]+\.[a-z]{2,4}/);
    }
    for(j=0; j<arr.length; j++){
    console.log(arr[j]);
    }
    console.log(typeof arr);
}
getDomainsOfEmails("vikaskumar2299@gmail.com is not a mail? Is vikas@xmail.com ? No? google.com? sachin@gmail.comsds gmail.com");
</script>

另外,我想知道它是否是一个对象,它的属性和值是什么?

【问题讨论】:

  • 是的,数组只是(特殊的)对象。任何不是原始值的值都是对象。
  • 第二个问题,read the documentation
  • 在 JS 中,数组只是一个合适的对象。它与许多其他对象的不同之处在于它的构造函数 (Array()) 并且它的原型默认设置有许多有用的方法。正整数属性指定键,它们的值指定数组的项。还有一个长度属性,它会通过键 getter 和 setter 自动更新(我假设)。您可以采用适当的对象并通过数组子类化将其转换为数组。 stackoverflow.com/a/27986285/4543207

标签: javascript arrays oop object


【解决方案1】:

根据以下结果显然是的

typeof Array()

返回"object"

Array() instanceof Object

返回true

更新:根据 API 文档

所有 Array 实例都继承自 Array.prototype。可以修改 Array 构造函数的原型对象以影响所有 Array 实例。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Properties_2

【讨论】:

【解决方案2】:

是的,数组只是对象

创建一个数组

var arr = new Array();

arr.____proto____(proto 链接 stackoverflow 正在消耗 2 个 undescores)--> Array.prototype

Array.prototype ---> Object.prototype

还有 [1,2,3] instanceof Object ---> true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2011-11-09
    • 2011-06-30
    相关资源
    最近更新 更多