JavaScript高级程序设计(第三版)第五章 引用类型

5.2 Array类型

1 var colors = new Array(3);      //创建一个包含3项的数组
2 var names = new Array("Greg");  //创建一个包含1项,即字符串“Greg”的数组

5.2.2 转换方法

1 var colors = ["red", "blue", "green"];    //创建一个包含3个字符串的数组
2 alert(colors.toString());    //red,blue,green
3 alert(colors.valueOf());     //red,blue,green
4 alert(colors);               //red,blue,green
1 var colors = ["red", "green", "blue"];
2 alert(colors.join(","));      //red,green,blue
3 alert(colors.join("||"));     //red||green||blue

5.2.3 栈方法

1 var colors = ["red", "blue"];
2 colors.push("brown");              //添加另一项
3 colors[3] = "black";               //添加一项
4 alert(colors.length);  //4
5
6 var item = colors.pop();           //取得最后一项
7 alert(item);  //"black"

5.2.4 队列方法

1 var colors = new Array();                      //创建一个数组
2 var count = colors.push("red", "green");       //推入两项
3 alert(count);  //2
4
5 count = colors.push("black");                  //推入另一项
6 alert(count);  //3
7
8 var item = colors.shift();                     //取得第一项
9 alert(colors.length);  //2

5.2.5 重排序方法

1 var values = [1, 2, 3, 4, 5];
2 values.reverse();
3 alert(values);       //5,4,3,2,1
 1 function compare(value1, value2) {
 2     if (value1 < value2) {
 3         return 1;
 4     } else if (value1 > value2) {
 5         return -1;
 6     } else {
 7         return 0;
 8     }
 9 }
10
11 var values = [0, 1, 5, 10, 15];
12 values.sort(compare);
13 alert(values);    //15,10,5,1,0

5.2.6 操作方法

1 var colors = ["red", "green", "blue"];
2 var colors2 = colors.concat("yellow", ["black", "brown"]);
3
4 alert(colors);     //red,green,blue
5 alert(colors2);    //red,green,blue,yellow,black,brown
1 var colors = ["red", "green", "blue", "yellow", "purple"];
2 var colors2 = colors.slice(1);
3 var colors3 = colors.slice(1,4);
4
5 alert(colors2);   //green,blue,yellow,purple
6 alert(colors3);   //green,blue,yellow
 1 var colors = ["red", "green", "blue"];
 2 var removed = colors.splice(0,1);              //删除第一项
 3 alert(colors);     //green,blue
 4 alert(removed);    //red,返回的数组中只包含一项
 5
 6 removed = colors.splice(1, 0, "yellow", "orange");  //从位置1开始插入两项
 7 alert(colors);     //green,yellow,orange,blue
 8 alert(removed);    //返回的是一个空数组
 9
10 removed = colors.splice(1, 1, "red", "purple");    //插入两项,删除一项
11 alert(colors);     //green,red,purple,orange,blue
12 alert(removed);    //yellow,返回的数组中只包含 一项

5.2.7 位置方法

 1 var numbers = [1,2,3,4,5,4,3,2,1];
 2
 3 alert(numbers.indexOf(4));        //3
 4 alert(numbers.lastIndexOf(4));    //5
 5
 6 alert(numbers.indexOf(4, 4));     //5
 7 alert(numbers.lastIndexOf(4, 4)); //3
 8 var person = { name: "Nicholas" };
 9 var people = [{ name: "Nicholas" }];
10 var morePeople = [person];
11
12 alert(people.indexOf(person));     //-1
13 alert(morePeople.indexOf(person)); //0

5.2.8 迭代方法

  • every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
  • filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。
  • forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
  • map():对数组中的每一项裕兴给定的函数,返回每次函数调用的结果组成的数组。
  • some():对数组中的每一项运行给定的函数,如果该函数对任一项返回true,则返回true。
 1 var numbers = [1,2,3,4,5,4,3,2,1];
 2
 3 var everyResult = numbers.every(function(item, index, array){
 4     return (item > 2);
 5     });
 6
 7     alert(everyResult);       //false
 8
 9 var someResult = numbers.some(function(item, index, array){
10     return (item > 2);
11     });
12
13      alert(someResult);       //true
1 var numbers = [1,2,3,4,5,4,3,2,1];
2
3 var filterResult = numbers.filter(function(item, index, array){
4     return (item > 2);
5     });
6
7     alert(filterResult);   //[3,4,5,4,3]
1         var numbers = [1,2,3,4,5,4,3,2,1];
2
3         var mapResult = numbers.map(function(item, index, array){
4             return item * 2;
5         });
6
7         alert(mapResult);   //[2,4,6,8,10,8,6,4,2]
时间: 2024-10-20 18:44:29

JavaScript高级程序设计(第三版)第五章 引用类型的相关文章

读Javascript高级程序设计第三版第六章面向对象设计--创建对象

虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式  1 function CreatePerson(name,age,job){ 2         var o=new Object(); 3         o.name=name; 4         o.age=age; 5         o.job=job; 6         o.sayName=function(){ 7            

《JavaScript高级程序设计 第三版》 前2章 Javascript简介与HTML 读书笔记

第一章:Javascript简介 1.JavaScript诞生于1995年,当时,它的主要目的是处理以前由服务器端语言(如Perl)负责的一些输入验证操作.现在,JavaScript是一种专为与网页交互而设计的脚本语言. 注:Netscape(网景)公司研发,Java是sun公司研发,原名为LiveScript,为了搭上媒体热炒的Java的顺风车,更名为JavaScript 2.微软推出JSript的和网景的JavaScript相竞争,最后微软胜利.ECMA指定了规定并重新命名为ECMAScri

21.1 XMLHttpRequest 对象【JavaScript高级程序设计第三版】

IE5 是第一款引入XHR 对象的浏览器.在IE5 中,XHR 对象是通过MSXML 库中的一个ActiveX对象实现的.因此,在IE 中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLHttp.MSXML2.XMLHttp.3.0 和MXSML2.XMLHttp.6.0.要使用MSXML 库中的XHR 对象,需要像第18章讨论创建XML 文档时一样,编写一个函数,例如: //适用于IE7 之前的版本 function createXHR() { if (typeof argumen

2.1 &lt;script&gt;元素【JavaScript高级程序设计第三版】

向 HTML 页面中插入 JavaScript 的主要方法,就是使用<script>元素.这个元素由 Netscape 创造并在 Netscape Navigator 2 中首先实现.后来,这个元素被加入到正式的 HTML 规范中. HTML 4.01 为<script>定义了下列 6 个属性. async:可选.表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本.只对外部脚本文件有效. charset:可选.表示通过 src 属性指定的代码的字符

javascript高级程序设计第三版 读书笔记

第三章   基本概念 1.在JavaScript中是区分大小写的,第一个字符是字母 _ 或者$,其他字符可以试数字 字母 _ 或者$,命名格式要求是驼峰式书写(第一个字母小写,剩下的每个有意义的单词开头大写  比如fontSize) 2.单行注释//  块级注释为/*多行 内容*/ 不得使用关键字和保留字 3.在JavaScript中变量是松散型的   可以为任何一种类型 4.用var操作符定义的变量成为定义该变量的作用域中的局部变量. function test(){ var i = 'hi'

20.2 解析与序列化【JavaScript高级程序设计第三版】

JSON 之所以流行,拥有与JavaScript 类似的语法并不是全部原因.更重要的一个原因是,可以把JSON 数据结构解析为有用的JavaScript 对象.与XML 数据结构要解析成DOM 文档而且从中提取数据极为麻烦相比,JSON 可以解析为JavaScript 对象的优势极其明显.就以上一节中包含一组图书的JSON数据结构为例,在解析为JavaScript 对象后,只需要下面一行简单的代码就可以取得第三本书的书名: books[2].title 当然,这里是假设把解析JSON 数据结构后

模拟事件【JavaScript高级程序设计第三版】

事件,就是网页中某个特别值得关注的瞬间.事件经常由用户操作或通过其他浏览器功能来触发.但很少有人知道,也可以使用JavaScript 在任意时刻来触发特定的事件,而此时的事件就如同浏览器创建的事件一样.也就是说,这些事件该冒泡还会冒泡,而且照样能够导致浏览器执行已经指定的处理它们的事件处理程序.在测试Web 应用程序,模拟触发事件是一种极其有用的技术.DOM2 级规范为此规定了模拟特定事件的方式,IE9.Opera.Firefox.Chrome 和Safari 都支持这种方式.IE 有它自己模拟

4.1 基本类型和引用类型的值【JavaScript高级程序设计第三版】

ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象. 在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值.第3 章讨论了5 种基本数据类型:Undefined.Null.Boolean.Number 和String.这5 种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值. 引用类型的值是保存在内存中的对象.与其他语言不同,JavaScript 不允许直接访问内存中的

javascript高级程序设计第三版dom元素大小笔记

是滚动大小(scroll dimension),指的是包含滚动内容的元素的大小.有些元素(例如 <html>元素),即使没有执行任何代码也能自动地添加滚动条:但另外一些元素,则需要通过 CSS 的 overflow 属性进行设置才能滚动.以下是 4 个与滚动大小相关的属性. 在IE8以下scrollHeight=元素内容本身的高度. 1.增加边框,不同浏览器有不同解释. 谷歌火狐IE>=8会忽略边框的大小. 2,增加内边距,最终值是width||height+padding ie8以下是

10.1.5 Comment类型【JavaScript高级程序设计第三版】

注释在DOM中是通过Comment 类型来表示的.Comment 节点具有下列特征: nodeType 的值为8: nodeName 的值为"#comment": nodeValue 的值是注释的内容: parentNode 可能是Document 或Element: 不支持(没有)子节点. Comment 类型与Text 类型继承自相同的基类,因此它拥有除splitText()之外的所有字符串操作方法.与Text 类型相似,也可以通过nodeValue 或data 属性来取得注释的内