引用类型是一种数据结构,用于将数据和功能组织在一起。这篇文章主要介绍了 JavaScript 入门教程之引用类型的相关资料,需要的朋友一起学习吧
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
引用类型
引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但这种称呼并不妥当。尽管 ECMAScript 从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。
前面提到过,引用类型的值便是对象,在 ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起,而对象则是某个特定引用类型的实例。
- var a=new Object();
上面便声明了一个引用类型为 Object 的实例,并将这个实例存储到变量 a 中,也就是说这个变量实际是并不是包含了这个实例本身,而是指向这个实例的指针。
对于 Object 类型,常用对象字面量表示法来创建实例 既 var a={name:"Nick",age:20} 这样做的优点是给人封装的感觉。而对象的访问则是使用了点表示法或者方括号表示法。a.name 等价于 a["name"],注意此处的 "name" 是以字符串表示的。
对于 Array 类型,则可以使用数组字面量表示法。
对于 Array 类型,可以使用 length 来改变数组的长度。(从数组的末尾添加或者移除项)
检测数组的方法是 Array.isArray(value) 方法
转换方法:toString() 转换成以","分割各项的一个字符串。valueOf(),返回的依旧是数组。toLocaleString() 可以用下例实现。
- var p1 = {
- toString: function() {
- return "guo";
- },
- toLocaleString: function() {
- return "yuzhe";
- }
- }
- var p2 = {
- toString: function() {
- return "song";
- },
- toLocaleString: function() {
- return "hap";
- }
- }
- var p = [p1, p2];
- alert(p); //guo,song
- alert(p.toLocaleString()); //yuzhe,hap
可见 alert 在输出前先调用了 toString() 方法,此外还有 join() 方法,用于以指定的符号返回成字符串 ,其默认的(不设置参数)为 ","。
栈方法:push() 在末尾添加项,返回数组长度。pop() 在末尾删除项,返回删除项。
队列方法:shift() 溢出数组第一项,返回该项。unshift() 在首段添加项,返回数组长度。
重排序方法(返回值为数组):
reverse() 反转顺序。a[length-1]=a[0]
sort() 升序排序法 默认的 sort() 是以 ASCII 排序的,而非我们认为的数字大小,所以比较大小需要这样使用
- function compare(no1, no2) {
- if (no1 < no2) {
- return - 1;
- } else if (no1 > no2) {
- return 1;
- } else {
- return 0;
- }
- }
- var a = [1, 2, 3, 4, 6, 5];
- a.sort(compare);
- alert(a)
若想产生降序效果,只需反转 if 语句。
操作方法:
concat() 创建了一个副本,对原数组无影响,作用是添加接受的参数到数组的末尾。
slice() 创建一个副本,接受 1 或者 2 个参数(返回项的起始和结束位置,不包含结束位置),在只有一个参数的情况下,返回从指定位置到结尾所有项。如果参数为负数,则结果为 length+arguments, 若结束位置小于起始位置,则返回空数组。
splice():1. 删除方法 -- 指定两个参数,删除的第一项的位置和删除的项数。
2. 插入方法 -- 指定三个参数,起始位置,0(要删除的个数),要插入的项。
3. 替换方法 -- 指定三个参数,起始位置,删除的个数,要插入的项
插入 / 替换的位置是起始位置。
位置方法:
indexOf() 返回要查找的项的数组下表, 没有则返回 - 1. 参数:要查找的项和(可选的)查找起点位置的索引(下标)。
lastIndexOf() 是 indexOf() 的逆序。
迭代方法:
2 个参数:要运行的函数和(可选的)的作用域,传入这些方法中的函数需要有三个参数(item(数组项的值),index(该项的位置),array(数组对象本身)).
every() 对数组中的每一项运行给定函数,每一项都返回 ture 则返回 true
filter() 返回会返回 true 的项组成的数组
forEach() 对每一项运行给定函数,无返回值
map() 返回每次函数执行结果组成的数组
some() 若有一项为 true,则返回 true
- <script>
- var a = [1, 2, 3, 4];
- var b = a.every(function(item, index, array) {
- return item > 2;
- });
- alert(b); //false
- </script>
归并方法:
reduce() 从数字第一项开始遍历, reduceRight() 从数组最后一项开始遍历
使用 reduce() 来求数组中的所有和
- <script>
- var a = [1, 2, 3, 4];
- var b = a.reduce(function(prve, cur, index, array) {
- return prve + cur;
- });
- alert(b); //10
第一次执行时, prev 为 1,cur 为 2 ,第二次执行时, prev 为 3,cur 为 3。
来源: http://www.phperz.com/article/17/0223/266015.html