卓越2008

用一颗谦虚的心面对大家,用一颗坚定的心面对困难,用一颗执著的心面对理想,用一颗虔诚的心面对技术。

导航

2007-11-20

Posted on 2007-11-27 03:56  Casm  阅读(143)  评论(0)    收藏  举报

对象是一个无序的属性集合,每个属性都有自己的名字和值,存储在对象中的以命名的值即可以是原始值也可以是对象,创建对象最简单的方法是加入一个直接量,每个属性名可以是一个标识符或一个字符串,而每个属性值可以是一个常量或表达式如 var objectName = { 属性名1:属性值, 属性名2:属性值,… },对象的直接量是这样的一个表达式,每次计算他的时候,他都会创建并初始化一个新的不同的对象,这就是说,如果一个单个的对象直接量出现在重复调用的一个函数的循环体内,它可以创建很多新的对象,还可以使用new运算符创建具体的一类对象,在new后面跟着一个构造函数,它用来初始化对象的属性,创建一个新的对象属性不必用var来声明,而且一旦通过属性赋值创建了该属性,就可以在任何时刻改这个属性值

用for/in循环列出对象的属性没有特定的顺序,而且虽然可以枚举出所有用户定义的属性,但却不能枚举出某些预定义的属性或方法

In运算符用来测试一个对象属性的存在性,如:if (“x”in o),如果不存在则返回undefined

作为关联数组的对象object[“property”]

通用的Object属性和方法:

Constructor属性引用了初始化这个对象的构造函数

toString()方法返回一个某种程度上代表对象的值的一个字符串(当函数转换为字符串时,得到的就是源代码)

toLocaleString()方法返回一个本地化字符串表示,Object默认的toLocaleString()方法不会本地化自己,总是返回和toString()完全相同的内容

valueOf()方法把对象转换成数字

hasOwnProperty()方法,如果对象用一个单独的字符串参数所指定的名字来本地定义一个非继承的属性,就返回true,否则返回false

propertyIsEnumerable()方法,如果对象用一个单独的字符串参数所指定的名字来定义一个非继承的属性,并且如果这个属性可以在for/in中枚举就返回true,否则返回false

isPrototypeOf()方法,判断参数所属的对象是参数的原型对象,那么返回true否则返回false

创建数组的三种方式:

var a = new Array();

var a = new Array(5, 4, ””);

var a = new Array(10);

数组也可以使用关联数组,而且数组长度不定,下标也可以不连续

数组的length属性可以读写,如果要给length设置了一个比它的当前值小的值,那么数组会被截断,这个长度意外的元素会被抛弃,如果给length设置比当前值大,那么新的未定义的元素就会被添加到数组末尾,以达到指定长度

数组的方法:

join():把数组所有元素都转换成字符串,然后再把它们连接起来,可以指定一个可选的字符串来分隔结果字符串中的元素,如果没有指定,那么默认使用逗号

reverse():将颠倒数组元素的顺序并返回颠倒后的数组

sort():对数组排序,如果数组含有未定义的元素,那么将被放到末尾,如果要将数组按照别的顺序来排序,必须将一个比较函数作为参数传递给sort,该函数确定他的两个参数在排序数组中哪个在前,哪个在后

concat():创建并返回一个数组,这个数组包含了调用concat()的原始数组的元素,其后跟随的是concat()的参数,如果其中有些参数是数组,那么他将被展开,其元素将被添加到返回的数组中,不能递归展开

slice(startIndex, [endIndex]):返回数字的一个片段,或者叫子数组

slice(0)——从0开始

slice(0, 3)——0~3不包括3

slice(0, -2)——0~倒数第二个

splice():插入或删除数组元素的通用用法

splice(1,2)——删除1开始2个元素

splice(1,2,“a”,3)——插入元素从位置1开始插入

push()和pop():可以向堆栈一样使用数组,尾部当栈顶

unshift和shift():可以向堆栈一样使用数组,首部当栈顶