有人可以向我解释这段代码以及'arr'的类型。 我知道数组是一个对象但是
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]"
这里的交易是什么?
这篇SO帖子已经详细解答了这个问题
答案 0 :(得分:0)
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()
函数不计算该属性。
答案 1 :(得分:0)
JavaScript数组是专用对象,因此它们都是数组和对象。因此,您可以像任何其他对象一样向它们添加属性。 length
属性仅考虑数字属性,因此添加name
等任意属性不会影响它。
答案 2 :(得分:0)
所有javascript变量都是对象。像这样的一些对象也是数组。
因此,您可以设置属性(因为它是一个对象),还可以查看特定于数组的属性(因为它是一个数组)。
答案 3 :(得分:0)