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
相关文章推荐
- JavaScript事件冒泡简介及应用
- js之操作JSON数据
- 详解Javascript中的Array对象
- bzoj 1452: [JSOI2009]Count
- [BZOJ1452][JSOI2009]Count(二维树状数组)
- 学习总结HTML CSS JAVASCRIPT,对三剑客的一些理解
- javascript中运算符有哪些? 他们的优先级 呢?
- javascript--aop实现
- JSONP处理同源策略
- JSP页面传值乱码过滤方法
- JSP入门教程之基本语法简析
- JSP页面间传值问题实例简析
- JS+CSS实现闪烁字体效果代码
- JavaScript图像延迟加载库Echo.js
- JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
- JS简单编号生成器实现方法(附demo源码下载)
- javascript HTML5 canvas实现打砖块游戏
- JS中的forEach、$.each、map方法推荐
- JS模拟简易滚动条效果代码(附demo源码)
- JavaScript数组去重的两种方法推荐