论坛首页 Web前端技术论坛

7 Object And Array

浏览 1834 次
精华帖 (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
arr[1.23] is undefined
arr is 0,1,2,3,,,,,,,10

 

其次,要注意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"

 数组全部展开了。

论坛首页 Web前端技术版

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