请问js对象属性值为什么用数组也可以访问

var obj = {
name:'lily',
year:'20'

}
alert(obj.year);
alert(obj['year']);

这两种都能访问到year的值。难道对象和数组没区别?

对象的属性确实可以通过类似于通过访问数组的中括号形式进行访问。
原理上来讲,是js这样设计的,很多弱类型语言都是如此设计。
可是并不能理解为对象跟数组没区别,例如说,你可以使用Array类型方括号的形式访问Object类型数据的属性。但是反过来,不能使用Object的点号访问Array类型数据的内容。
在js里,Key对应Value的数据结构,其实都是Object类型的,Array类型的数据都是一维的,数字下标的数据集合。

另外,二楼给你举得例子是没问题的,非常实用,插一句,还有另一种情况
就是你要访问的key是有空格的,也可以使用这种方式,例如说 people['first name'],这种情况是没法使用点号进行访问的。

最后,一楼的那个理解完全是错误的,这跟JSON没任何关系
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-26

两个都是获取对象值的方式。


第二个用变量名获取对象值的时候很有用。

var obj = {
 name:'lily',
 year:'20'

}
alert(obj.year);
var y = 'year';
// 用变量获取
alert(obj[y]);

本回答被提问者采纳
第2个回答  2013-10-18
个人认为这个就是json格式的神奇,js是弱类型语言,不强调类型。json总的来说就是key-value模型的,一个key对应一个value。你的第二种用法并没用到数组特性,js并不强调这些。并不是[]内的都是数组,第二种写法个人的理解是,object这个对象中,year这个key对应的value。

请问js对象属性值为什么用数组也可以访问
两个都是获取对象值的方式。第二个用变量名获取对象值的时候很有用。var obj = { name:'lily', year:'20'}alert(obj.year);var y = 'year';\/\/ 用变量获取alert(obj[y]);

js 究竟什么时候使用对象数组 什么时候使用数组对象
首先,“对象数组”,在我的理解里可以理解成两种可能:其一,数组中的元素全部是对象,即由对象构成的数组;其二,JS中以键值对组合成的对象,由于可以使用类似数组取值的方式读取对象属性的值,因此对象也可看作一种特殊的数组。其次,“数组对象”,即通常所说的数组,因为JS中一切借对象,数组也是对象...

js数组和对象的区别
对象的属性可以是任意字符串 比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢?数组表示有序数据的集合,而对象表示无序数据的集...

js 是否能根据对象的id直接从对象数组中获取该对象
} 通过该id的索引可以很方便的找出数组中对应的变量,list[对象.id]这样做适合于大量数据查找对应属性的操作,只需要遍历一遍,后续的所有查找动作都可以通过索引直接完成。经过本人测试 find方法比直接遍历慢十倍,比直接通过索引查询慢一百倍,综上,还不如直接用遍历来的快些!测试代码如下:<!DOCTYPE ...

JS 烧脑面试题大赏
assign方法可以用于处理数组,不过会把数组视为对象,比如这里会把目标数组视为是属性为0、1、2的对象,所以源数组的0、1属性的值覆盖了目标对象的值。 答案 4 解析 这题考查的是自增运算符的前缀版和后缀版,以及switch的语法,后缀版的自增运算符会在语句被求值后才发生,所以x会仍以1的值去匹配case分支,...

js操作对象属性用点和用中括号有什么不同?
一、功能不同 1、用点:表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。2、用中括号:表示一个数组,也可以理解为一个数组对象。二、语法不同 1、用点: var LangShen = {"Name":"Langshen","AGE":"28"}。langShen.Name。在JSON数据结构、写函数组的时候中经常用。2、用...

js数组和对象哪个效率高
数组和对象是两种存储结构,性能的问题取决于使用for还是for in,for 的的性能明显会高于for in因为前者直接遍历数据,但是他不能访问到对象的key值,而后者则可以具体访问到key,具体使用您可以google,在使用for in的时候会遍历对象的原型链这样会增加算法的时间复杂度,所以说性能问题不再存储结构上,而...

javascript中使用object[key]查找属性的过程是怎样的呢(相
现代JavaScript引擎在实现中允许对象当作数组使用,提供数组元素访问功能。数组和普通对象的主要区别在于长度属性的自动维护和通过长度属性操作删除元素的能力。一些早期JavaScript实现如JScript在数组优化上存在不足,而现代引擎则使用了高效的方法,如隐藏类(hidden class)来实现对象属性访问和数组元素的高效访问...

JS对象数组中如何匹配某个属性值
在JavaScript中,当我们面对一个对象数组时,经常会遇到需要根据特定属性值来匹配某个项的需求。例如,我们有一个对象数组a,其中包含不同对象,每个对象都有一个id属性和name属性。我们想要检查变量b(如3)是否存在于数组a的id值中。如果存在,返回true;如果不存在,返回false。实现方式如下:首先,可以...

JS中轻松遍历对象属性的几种方式
对于需要同时获取属性名和值的情况,可以使用`Object.entries()`方法。它返回一个数组,其中包含对象自身可枚举属性的键值对。这样,可以直接通过数组解构或Map构造函数轻松访问键和值。javascript let greetingMap = { hello: 'world',hi: 'there'};let entries = Object.entries(greetingMap);console....

相似回答