object literal
用{}包围的一组name/value对。name/value用冒号分隔。每一对之间用逗号分隔。
要创建一个新的属性,只需要给要创建的属性赋值。
in操作符可以用来检验某个对象是否含有某个属性
in操作符左边是属性名的字符串,右边是对象
if( "x" in obj) obj.x = 3;
由于访问不存在的属性将会返回undefined,因此也可以用这种方式来判断属性的存在性
if( obj.x !== undefined) obj.x = 4;
delete 删除属性
var o = {x:1,y:2,z:3};
alert(o.x);//1
delete o.x;
alert(o.x);//undefined
访问对象属性有两种方法,[]和.号,它们最重要的区别在于,[]中跟的是字符串,因为是字符串,就可以任意装配,比如以下代码:
for(var i=0; i < 10; i++){
alert(obj["x" + i]);
}
另外一种不同在于,[]访问对象其实类似于JAVA的反射方式,如:
var stockName = getStockName();
var shares = getShares();
portfolio[stockName] = shares;
对象通用属性和方法:
- constructor属性,该属性将指向到初始化该对象的构造函数。
instanceof操作符就是检查constructor属性来实现的。var d = new Date9); alert(d.constructor);//returned Date.
- toString()方法。
当用+号链接一个字符串或者使用alert,参数是对象时,toString()方法将会自动被调用。 - toLocaleString()方法。
ECMAScript v3和JS1.5中定义的,基本上和toString()返回的一样。 - valueOf()方法
当需要将对象转换成一个元数据时使用 - hasOwnProperty()方法。
参数是属性名,如果对象本地定义了一个以该参数命名的非继承属性,返回true。 - propertyIsEnumerable()方法
如果该对象有以参数命名的非继承属性,返回true。var o = {x:3,y:4}; alert(o.propertyIsEnumerable("x"));//true alert(o.propertyIsEnumerable("z"));//false
- isPrototypeOf()方法
声明array:
var a = [1,2,3];
var a = new Array(5,4,3,2,1);
var a = new Array(10);
如果用一个非法的索引访问数组(非数字,不是大于等于零小于最大范围的整数),该数组将被转换为一个对象
这种情况下,o.length还是不变的。
增加数组对象,使用一个没有索引到的索引值,并赋值即可
如果使用DELETE删除数组对象,实际上该对象依然存在,数组大小也没有改变,只是将被删除元素的值改成了undefined.要真正删除一个数组元素,需要使用Array.shift()来删除数组的第一个元素,使用Array.pop()删除最后一个元素, Array.splice()删除一段连续的元素。
var temp = new Array(1,2,3);
temp[30] = 4;
alert(temp.length);// return 31;
Array的length属性是可以修改的,如果将length改小,那么该数组就被截断,改大数组就被扩大
数组的通用方法:
- join()
将数组的所有元素转换成字符串并连接起来.
如果o的元素有未初始化的,则置为空var o = [1,2,3]; alert(o.join()); // returned: 1,2,3 alert(o.join("/"));//1/2/3
- reverse()
将所有元素的顺序倒置 - sort()
将数组按字母顺序排列.如果有未初始化的元素,则将它们排列在数组的最后
sort()函数可以传入一个函数作为参数,该函数有两个参数,及连个需要比较的对象,如果第一个参数要在第二个之前,该函数必须返回小于0的值,否则返回大于零的值,如果返回0,则两个参数相等. - concat()
将参数加如到数组中.var a = [1,2,3]; a.concat(4,5);//returns [1,2,3,4,5]
- slice()
类似subString(),带两个参数,则从第一个参数的位置开始,到小于第二个参数1的位置截取数组。如果是一个参数,则返回该参数开始,直到数组结尾的子数组。如果参数为负数,则表示和最后一个元素开始相应的前几个位置。 - splice()
第一个参数决定开始删除/增加元素的起始位置,第二个元素表示删除起始位之后的几个元素。
splice()将会返回被删除的元素组成的数组。
如果不止两个参数,则第三个元素开始的元素将被加入到原数组中,位置在起始位置(第一个参数指定)。var a = [1,2,3]; a.splice(2,0,'a','b');//returns []; a变成[1,2,'a','b' , 3]
- push() and pop()
将数组当作栈来操作。push将参数依次加入到数组尾部,pop将尾部的参数去掉,并将去掉的元素作为返回值。 - unshift() and shift()
类似于push()和pop(),只不过push,pop在数组尾部操作,unshift,shift在数组头部操作。
unshift将元素加入到数组头部,返回新数组的长度。shift将头部的对象删除,并作为返回值返回。 - toString() and toLocaleString()