Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是Javascript中的数组还是对象?_Javascript - Fatal编程技术网

这是Javascript中的数组还是对象?

这是Javascript中的数组还是对象?,javascript,Javascript,有人能给我解释一下这段代码以及“arr”的类型吗。 我知道数组是一个对象,但是 如果[[Class]]的行为类似于对象,为什么它会显示为数组 arr.length返回3。怎么做 var arr = [0, 1, 3]; arr.name = "asdf"; console.log(arr[1] + " " + arr.name + " " + arr.length); // Returns-> 1 asdf 3 Object.prototype.toString.call(arr);

有人能给我解释一下这段代码以及“arr”的类型吗。 我知道数组是一个对象,但是

  • 如果[[Class]]的行为类似于对象,为什么它会显示为数组
  • arr.length返回3。怎么做

    var arr = [0, 1, 3];
    arr.name = "asdf";
    
    console.log(arr[1] + " " + arr.name + " " + arr.length); 
    // Returns-> 1 asdf 3
    
    Object.prototype.toString.call(arr); 
    // Returns-> "[object Array]"
    
  • 这是怎么回事


    这已经在这篇文章中得到了详细的回答


    var-arr=[0,1,3]
    只是
    var-arr=Array.new(0,1,3)
    的语法糖。这是一样的,因此
    arr
    是一个
    Array
    ,而
    Array
    的实例是一个对象:

    var arr = [0, 1, 3];
    typeof arr;  // returns "object"
    arr instanceof Array;  // returns true
    

    Array
    重写
    lenght()
    函数,只计算数组中的元素数;设置
    arr.name=“asdf”
    时,您正在为此特定对象设置属性,但
    length()
    函数不计算该属性。

    JavaScript数组是专用对象,因此它们既是数组又是对象。因此,您可以像添加任何其他对象一样向其添加属性。
    length
    属性只考虑数值属性,因此添加任意属性(如
    name
    )不会影响它。

    所有javascript变量都是对象。像这样的一些对象也是数组

    因此,您可以设置属性(因为它是一个对象),也可以查看特定于数组的属性(因为它是一个数组)。

    有关1,请参阅“数组实例的属性”一节:

    数组实例从数组原型对象继承属性,其[[Class]]内部属性值为“Array”。数组实例还具有以下属性

    有关第2节,请参见“长度”一节

    此数组对象的length属性是一个数据属性,其值在数值上始终大于名称为数组索引的每个可删除属性的名称


    Object.prototype.toString.call([])
    将始终提供“
    ”[对象数组]”
    ,在其上附加属性没有什么特别之处。长度为3,因为您添加了3个元素(
    0、1、3
    )。