Javascript对象属性作为地图的关键

时间:2016-02-19 06:58:49

标签: javascript

我是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"}

如果你展开x,这就是它的显示方式 enter image description here

要清楚地了解这一点,我应该熟悉哪些基本概念?

2 个答案:

答案 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是一种"原型语言"。如果您深入了解兔子洞,您的浏览器会向您展示原型制作的结构。