您的位置:首页 > Web前端 > JavaScript

Javascript引用类型学习

2016-04-05 08:42 387 查看


Object类型


两种声明方式:

1. 使用new,如下:
var person = new Object() ;
person.name = 'Ben' ;
person.age = 18 ;


2. 使用对象字面量定义对象
var person = {
"name" : 'Ben' ,
"age" : 18
};


但是,要注意的是,使用对象字面量来声明的话是不会调用Object的构造函数的.


Array类型

Array的声明方式也有几种方式,这里直接陈列出来:
var colors = new Array(20) ;                                         //这里指的是声明一个长度为20的数组
var colors = new Array('red', 'blue', 'white') ;                     //这里指的是声明一个包含三个颜色的数组


这两种方式可能会引起一个疑惑,所以规定,若只有一个参数,如果传递的是数值,则会创建包含给定项数的数组;如果是其他类型,则会创建只包含那个值的只有一项的数组。同上面的Object一样,创建数组也可以不用new关键字:
var colors = ['red', 'blue', 'black'];
var colors = [] ;


与Object一样,使用数组字面量方式创建时,不会调用Array构造函数

Array有一个属性叫 length, 可以通过 ' * . length'来获取值,不过特殊在于,该属性不是只读的,因此通过设置该属性,可以从数组的末尾移除项或添加新项。

如下:
var colors = ['red', 'black', 'blue'] ;                 //此时 colors.length = 3
colors.length = 2 ;
alert(colors[2]) ;                                      //显示 undefined


如果改变length的值更大了,那么多出的几个都会取得undefined值。
var colors = ['red', 'black', 'blue'];
colors[22222] = 'ee';
console.log(colors.length);                                //此时显示长度为22223 ,其中未赋值的获取到的都会是undefined.


关于检测数组,这里就不再举例了,就是使用 Array.isArray() 方法来判断

接下来就是将数组转换成字符串,可以有两种方法,一个是 toString() 方法,一个是 valueOf() 方法。 最后的结果将每个值拼接成一个字符串,并以逗号分隔。

如果希望得到的字符串不以逗号分隔,那么可以使用数组的join方法:
var colors = ['red' , 'green', 'blue'] ;
alert(colors.join("|"));



Javascript里的数组实现的许多方法,数组本身的方法,或是数据结构方法:


push :在数组的末尾添加元素,返回新数组的长度
pop :移除数组的末尾元素,返回被移除的元素(与push组合即为栈)
shift :移除数组的以一个项,返回被移除的元素(与push组合即为队列)
unshift:在数组前端添加任意个项,返回新数组长度
concat:这个方法会先创建当前数组的一个副本。然后将接受到的参数添加到这个副本的末尾,最后返回新构建的数组(可以传入一个字符串,或是一个或多个数组)
slice :基于当前数组中的一个或多个项创建新数组(xxxx.slice(0,3)即返回xxxx数组的前三个元素组成的数组)
indexOf:接受一个或两个参数,要查找的项和表示查找起点位置的索引(可选),如果没有第二个参数默认从0开始,从前往后查找
lastIndexOf:与上面一样,只是从后往前查找



sort 方法:



默认按升序排序,但是,此方法会调用每个元素的toString方法,然后比较得到的字符串,因此,即使数组中每一个都是数值类型的元素,该方法比较的也是字符串,所以在比较后会发现5比10大,所以这种排序往往不能达到目的,所有有了比较函数这个参数

使用如下比较函数即可正常比较数值类型大小:
functin compare(val1, val2){
return val1 -
}

var values = [0, 1, 10, 5, 15 ];
values.sort(compare);                    //得到 [0, 1, 5, 10, 15]


splice方法:

删除元素:指定2个参数,要删除的第一项的位置和要删除的项数。例如 splice(0, 2)即删除前两项
插入元素:指定3个或更多参数,起始位置,0(即要删除的项数)和要插入的项,可以插入多个项,跟在第三个元素后面
替换元素:即在删除的同时进行插入操作,结合前两个操作即可

操作返回一个数组,其中包含原始数组中删除的项(若么有删除即为空)

数组迭代方法:

均接受两个参数,要在每一个元素上运行的函数和运行该函数的作用域对象---影响this的值。函数会接受三个参数,数组项的值,该项的位置,数组对象本身。

every:对数组中每一项运行给定函数,如果该函数对每一项都返回true,则返回true
filter:对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
forEach:对数组中每一项运行给定函数,无返回值
map:对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组
some:对数组中每一项运行给定函数,如果有任意一个返回true,则返回true

数组缩小方法:

reduce:方法会迭代数组所有项,构建一个最终返回值。接受两个参数,函数和作为缩小基础的初始值(可选)。函数有四个参数:前一个值,当前值,项的索引,数组对象。
reduceRight:从右往左,类似reduce
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: