对象和数组
1.创建对象最简单的方法是在JavaScript代码中加入一个对象直接量。例如:var point = {x:0,y:0}。这种表达式,在每次计算它的时候都创建并初始化一个新的不同的对象。new运算符可以创建具体的一类对象。
2.对象的属性。可以通过把一个值赋给对象的一个新属性来创建这个属性。例如:
var book = {};
book.title = "javascript";//这样就创建了book的属性title
3.使用for/in循环可以进行对象属性的枚举。这种枚举是没有特定顺序的,且只能枚举出所有用户定义的属性,不能枚举出某些预定义的属性和方法。
4.检查属性的存在性可以用in运算符,也可以用!==运算符,例如:
if("x" in o) o.x = 1;
if(o.x !== undefined) o.x = 1;
5.用delete运算符删除属性,不只是把属性设置为undefined,而是把属性重对象中移除,删除之后,for/in将不会枚举,in运算也检测不到。
6.作为关联数组的对象
object.property
object["property"]
在C、C++、java和其他类似的强类型语言中,一个对象的属性数是固定的,而且必须预定义这些属性的名字。而JavaScript是一种弱类型语言,它并不采用这一规则,所以可以为JavaScript的对象创建任意数目的属性。当采用“.”运算符时,属性名使用标识符表示的。而当用[]时,属性名是字符串,这样在程序运行过程中,就以操作并创建他们。
关联数组是一个数据结构,允许动态地将任意数值和任意字符串关联在一起(类似于map)。
7.通用的Object属性和方法:
1>.constructor属性。它引用了初始化这个对象的构造函数,它的值就是这个对象的类型。instanceof运算符可以检查的它的值,例如:
o instanceof Date
2>.toString()方法。默认的这个方法并不能提供太多信息,所以很多类都定义了自己的toString()方法。
3>.toLocaleString()方法。
4>.valueOf()方法。当JavaScript把一个对象转换成一个基本数据类型时调用。
5>.hasOwnProperty()方法。如果对象用一个单独的字符串参数所指定的名字来本地定义一个非继承的属性,这个方法的返回值就是true。
6>.propertylsEnumerable()方法。如果对象用一个单独的字符串参数所指定的名字来定义一个非继承的属性,并且这个属性可以再一个for/in中枚举,这个方法的值为true。
7>.isPrototypeOf()方法。如果该方法所属的对象是参数的原型对象,那么该方法的值为true。
8.数组不过是一个具有额外功能层的对象。
9.定义数组:
var a = []; //数组直接量
var a = new Array();
var a = new Array(a,b,c);
var a = new Array(10);
10.数组下标不合法,则是定义了一个名为下标的属性。例如:
a[-1.23] = true;
则是定义了一个名为“-1.23”的属性。
11.JavaScript不像C和Java一样,数组没有固定的长度,数组可以有任意个元素,可以在任何时刻改变元素个数。而且JavaScript中的数组是稀疏的(sparse),下标不必落在一个连续的范围内,只有那些真正存储到数组中的元素才能分配到内存。例如:
a[0] = 1;
a[10000] = 10000;
JavaScript解释器只会给下标为0和10000的元素分配内存,而不会给他们之间9999个元素分配内存。
12.删除数组元素:delete运算符把一个元素的值设为undefined,但元素还存在。要删除需要用Array.shift(),Array.pop(),Array.splice()方法。
13.遍历数组时要小心,因为数组的下标可能不是相连的。
14.数组的length属性可以读可以写,如果给这个属性赋值一个小于当前长度的值,数据就会被截断,该数值之后的值就会丢失。如果这个值比当前值大,那么数组就会被增长。
15.虽然JavaScript不支持多维数组,但是JavaScript允许数组的元素为数组,变向应用。
16.数组的一些方法:join()、reverse()、sort()、concat()、slice()、splice()、push()、pop()、unshift()、shift()、toString()、toLocaleString()等等。
17.有一些对象类似数组,但不是一个数组,很多数组的方法无法效用。这种对象成为类似数组的对象。使用的时候注意。