我是Basic JavaScript Concepts的新手,所以想了解这是怎么回事。
我有一个对象x
var x={}
它有一个属性y
,其值为数组
x.y=["a","b","c"]`
因此它就像一张地图,其中y
是关键,数组["a","b","c"]
是值。然后y
如何能够拥有另一个名为z
的属性,它具有其他值说“嗨”
x.y.z= "hi"
y
已经["a","b","c"]
-------------------------> x.y= ["a","b","c"]
如何{"z":"hi"}
然后------------------------> x.y={"z":"hi"}
要清楚地了解这一点,我应该熟悉哪些基本概念?
答案 0 :(得分:1)
因为arrays是一些特殊方法的对象。
数组是类似列表的对象,其原型具有执行遍历和变异操作的方法。 JavaScript数组的长度和元素的类型都不固定。由于数组的大小长度随时增长或缩小,因此不保证JavaScript数组密集。一般来说,这些都是方便的特征;但如果这些功能不适合您的特定用途,您可以考虑使用类型化数组。
有些人认为you shouldn't use an array as an associative array。在任何情况下,您都可以使用普通objects,尽管这样做有其自身的警告。请参阅帖子Lightweight JavaScript dictionaries with arbitrary keys作为示例。
答案 1 :(得分:0)
在javascript中,数组是对象。例如,如果您检查"键入"对于每个人:
var myArray = [];
var myObject = {};
console.log(typeof(myArray)); // yields 'object'
console.log(typeof(myObject)); // yields 'object'
这个想法是一个数组建立在较低级别的对象上。 (Arrays扩展Object)通过添加其他功能,例如" length"财产,加入,排序等。
所以当你手动将一个属性"放入"一个数组,它将尊重你的请求,因为Array是Object的扩展,所以和Array可以完成一个对象可以做的所有事情......等等!
所以对于这个例子:
// Our traditional array
var myArray = ["aaa", "bbb", "ccc"];
我们期待正常的指示,其中:
myArray[0] -> aaa
myArray[1] -> bbb
myArray[2] -> ccc
但是当我们手动将属性放入数组时:
myArray.xyz = "interesting";
那么,它可以并将存储在数组中。
如果你想一下一个数组,你可以访问它"长度"财产,对吧?
var len = myArray.length;
所以每个数组中都有很多属性,所以当你添加自己的属性时,这是正常的(虽然不推荐),因为javascript非常灵活。
你看到的 proto 事物正在展示"事物"在javascript中可以"扩展"。同样,Array扩展了Object。在javascript中Prototype有点像" parent"其他类可以构建或扩展的类,并包含更多功能。
所以你会发现有一个"对象"那里有 proto ,这意味着" Array"正在利用"对象"原型(因此它可以完成对象可以做的所有事情),然后它将一堆东西添加到原型中,结果是Array Prototype,它现在是它自己的实体,具有不同的功能,不同于对象有。
您不时会听到人们说Javascript是一种"原型语言"。如果您深入了解兔子洞,您的浏览器会向您展示原型制作的结构。