锁定老帖子 主题:7 Object And Array
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-18
1. 首先就是Object可以用作Hash, Map,关联数组
2. Object的属性和方法hasOwnProperty() propertyIsEnumerable() isPrototypeOf()
3. Array的属性和方法首先要注意Array[index]中的index不会做任何trunction这种操作,什么意思呢,看下面的代码 var arr = [0,1,2,3]; //!arr["1.23"] = 1.23; document.write("arr[1] is " + arr[1] + "<br>"); document.write("arr[1.23] is " + arr[1.23] + "<br>"); arr[10] = 10; document.write("arr is " + arr + "<br>"); 输出的结果是: arr[1] is 1
其次,要注意Array的length属性是可写的。也就是你可以改变它。看下面的代码: var arr = [1,2,3]; undefined arr; [1, 2, 3] arr.length = 5; 5 arr; [1, 2, 3, undefined, undefined] arr.length = 1; 1 arr; [1] Array的方法
1. join() 可以带一个分隔符,默认是","。不会改变数组
2. reverse() 反转数组,直接改变数组
3. sort() 排序,默认以字典顺序排序,改变数组 var arr2 = [-1, -100, 2, 35]; undefined arr2.sort(); [-1, -100, 2, 35] arr2; [-1, -100, 2, 35] arr2.sort(function(a,b){return a - b;}); [-100, -1, 2, 35] arr2 [-100, -1, 2, 35] 这个对于数字来说非常的不方便:(
4. concat 连接操作。不改变数组,返回拼接好的数组 var arr = [1,2,3,4]; undefined arr.concat(4,[5,[6,7]]); [1, 2, 3, 4, 4, 5, [6, 7]] arr; [1, 2, 3, 4] 第一层的子数组会被展开,但是再深度的就不会了。这点让人觉得蛮困惑的,为什么这么设计呢?
5. slice(a, b) 返回[a, b)的部分,不改变数组 var arr = [1,2,3,4,5]; undefined arr.slice(-3,-1); [3, 4] arr; [1, 2, 3, 4, 5]
6. splice(a, length, addOne, addTwo ...) 这个函数,首先删除[a, a+1, a+length-1],然后再加上addOne, addTwo。改变数组 var a = [1,2,3,4,5]; a.splice(2,0,'a','b'); // Returns []; a is [1,2,'a','b',3,4,5] a.splice(2,2,[1,2],3); // Returns ['a','b']; a is [1,2,[1,2],3,3,4,5]
7. push, pop, unshift, shift 改变数组 这些函数都蛮正常的理解,首先它会返回值,无论是push, unshift还是pop和shift,都会。push,unshift是返回数组的长度,pop和shift是返回那个被pop或者shift的值。还需要注意,如果一次unshift很多值,值是一次进去的,所以顺序和你在参数列表里一致(不需要理解这句话,看下面的例子就知道) var arr = [1,2,3,4,5]; undefined arr.push(6); 6 arr.pop(); 6 arr.push(6,7,8); 8 arr.pop(); 8 arr; [1, 2, 3, 4, 5, 6, 7] arr.unshift(0); 8 arr; [0, 1, 2, 3, 4, 5, 6, 7] arr.shift(); 0 arr; [1, 2, 3, 4, 5, 6, 7] arr.unshift(-3,-2,-1,0); 11 arr; [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7] arr.shift(); -3 arr; [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7] 8 toString(), 不会改变数组。注意下面的例子: arr; [1, 2, 3, [4, 5, [6, 7]]] arr.toString(); "1,2,3,4,5,6,7" arr.join(); "1,2,3,4,5,6,7" 数组全部展开了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1834 次