论坛首页 Web前端技术论坛

javascript面向对象技术基础(二)

浏览 12155 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-30  
hanjs 写道
var array = new Array("no1","no2");  
array["po"] = "props1";  
alert(array.length);   //2  
//对于数组来说,array[0]同array["0"]效果是一样的(?不确定,测试时如此)  
alert(array[0] + "_" + array["1"] + "_" + array.po);//no1_no2_props1 

这段代码有疑问啊,为何length没有增加呢?我是这样看的。

其内部的length属性增加的时候,判断了标注,默认就是取length+1,可以上面赋值的时候制定了po,因为不是number类型,导致length没有进行加1处理。因为typeof array是object,因此只能通过 array.po访问这样添加的值.

lz,你写的这个第一篇帖子呢 javascript面向对象技术基础(一) ?我翻了好多页也没有看到,能否提供下?谢谢

不知道下面这个例子是不是和你所说的相悖:
var a = new Array();
alert(a.length); //0
a[9] = "s";
alert(a.length); //10


你看看我的博客吧,那个帖子没有人回,早不知道去哪儿了....
0 请登录后投票
   发表时间:2008-12-30  
你指定了9,是number,那么肯定可以处理的。我说的数组按其本意是只接受数字作为下标的。如果增加了string的,那么就和map差不多了,形成了key与value的形式
0 请登录后投票
   发表时间:2009-01-04  
风雪涟漪 写道

因为 firefox 忽略逗号后面为空的情况了。。。如 a=[1,2,] 在firefox 只有2个 ie里认为还有第三个元素是undefined.浏览器差异把。一个逗号。。。。呵呵


呵呵,的确,这也就解释了为什么{name:fornever,age:10,}可以在火狐下通过但是在IE下通不过了
0 请登录后投票
   发表时间:2009-02-22  
= =这个世界上有一种工具叫搜索。。。
0 请登录后投票
   发表时间:2009-02-23  
delete删除数组的元素时,是把该元素 赋值为undefined,而delete删除属性的时候,是直接删除掉,在使用for/in列举属性时不再可以列举。
0 请登录后投票
   发表时间:2009-04-29  
hanjs 写道

你指定了9,是number,那么肯定可以处理的。我说的数组按其本意是只接受数字作为下标的。如果增加了string的,那么就和map差不多了,形成了key与value的形式


这个应该是给对象添加了一个属性,属性名称是key。值是value
0 请登录后投票
   发表时间:2009-04-29  
风雪涟漪 写道

因为 firefox 忽略逗号后面为空的情况了。。。如 a=[1,2,] 在firefox 只有2个 ie里认为还有第三个元素是undefined.浏览器差异把。一个逗号。。。。呵呵

这一点还是认为IE做的比较正确。
0 请登录后投票
   发表时间:2009-05-04  
很不错,赞一个,收藏系列
0 请登录后投票
论坛首页 Web前端技术版

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