论坛首页 Web前端技术论坛

json和数组的疑问

浏览 3713 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-01  

var temH = [1, 2, 3, 4, 5, 6];
temH["html"]="html";
temH["text"]="text";
 如上代码 temH.length=6,temH.text="text 那temH自身是啥?
   发表时间:2012-04-01  
var temH = [1, 2, 3, 4, 5, 6];
temH["html"]="html";
temH["700"]=700;
temH["text"]="text";

这种情况怎么解释?
0 请登录后投票
   发表时间:2012-04-01  
JS中数组(Array)也属于对象(Object),你可以看作它的父类是对象,所以也能用a[b]=c形式添加属性。
而数组有重写定义属性(DefineOwnProperty)的这个流程(参考ECMA-262 v5 15.4.5.1)
如果属性名b是个有效数字,那么走完对象更新属性的原始逻辑后,还会触发数组自身的逻辑,更新length
如果是其它的,则走对象的原始逻辑
0 请登录后投票
   发表时间:2012-04-03  
数组也是对象,temH["html"]="html";  temH["text"]="text";这是为对象的属性赋值,可以比较一下两种循环 一个是for(var i in temH) 和 for(var i=0;i<temH.length;i++)
打印出temH[i]的值就会发现不同哦,foreach不仅会打印数组的内容,而且还会打印出属性值,而第二个循环只会打印数组中的值
0 请登录后投票
   发表时间:2012-04-05  
narutolby 写道
数组也是对象,temH["html"]="html";  temH["text"]="text";这是为对象的属性赋值,可以比较一下两种循环 一个是for(var i in temH) 和 for(var i=0;i<temH.length;i++)
打印出temH[i]的值就会发现不同哦,foreach不仅会打印数组的内容,而且还会打印出属性值,而第二个循环只会打印数组中的值

谢谢了,刚才试着验证了一下,很有帮助
0 请登录后投票
   发表时间:2012-04-05  
godnuk 写道
narutolby 写道
数组也是对象,temH["html"]="html";  temH["text"]="text";这是为对象的属性赋值,可以比较一下两种循环 一个是for(var i in temH) 和 for(var i=0;i<temH.length;i++)
打印出temH[i]的值就会发现不同哦,foreach不仅会打印数组的内容,而且还会打印出属性值,而第二个循环只会打印数组中的值

谢谢了,刚才试着验证了一下,很有帮助

发现了,真是这样的。。。
0 请登录后投票
   发表时间:2012-04-06  
wangyj0898 写道
godnuk 写道
narutolby 写道
数组也是对象,temH["html"]="html";  temH["text"]="text";这是为对象的属性赋值,可以比较一下两种循环 一个是for(var i in temH) 和 for(var i=0;i<temH.length;i++)
打印出temH[i]的值就会发现不同哦,foreach不仅会打印数组的内容,而且还会打印出属性值,而第二个循环只会打印数组中的值

谢谢了,刚才试着验证了一下,很有帮助

发现了,真是这样的。。。

学习啦~~~~~
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics