《JAVASCRIPT高级程序设计》第五章(1)
引用类型是一种将数据和功能组合到一起的数据结构,它与类相似,但是是不同的概念:ECMAScript虽然是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和结构等基本结构。引用类型也被称为“对象定义”。
一、Object类型
创建实例方式:
1使用new操作符+构造函数
var person = new Object(); person.name = "Lillian"; person.age = 29;
2使用对象字面量表示法
2.1属性不加引号
var person = {
person: "Lillian",
age:29
};
2.2属性加引号
var person = {
"person": "Lillian",
"age":29,
5:true //数值属性会自动转化成字符串
};
2.3使用空花括号
var person = {};
person.name = "Lillian";
person.age = 29;
访问属性的方式:
使用点或方括号:
alert(person.name); alert(person[age]);
二、Array类型
创建方式:
1使用Array构造函数
var colors = new Array();
var colors = new Array(20); //length = 20
var colors = new Array("red","blue","yellow"); //length = 3
2使用数组字面量
var colors = ["red", "blue", "yellow"]; var names = []; var values = [1,2,];//不要这样,会创建一个包含2项或3项的数组 var options = [,,,,,];//不要这样,会创建一个包含5项或6项的数组
除了Object类型,Array类型恐怕是JavaScript最常见的类型了,它的方法很多,这里先通过导图一览,再依次举例。

修改Array数组的内容:
var colors = ["red", "blue", "yellow"]; colors[0] = "green"; //修改第一项 colors[colors.length] = "black";//增加一项,值为"black" colors.length = 5; alert(colors[4]);//长度增加了1,但是未赋值,这一项为undefined colors.length = 1; alert(colors[1]);//undefined, 通过设置长度为1,移除了除第一项外的所有项
检测某个对象是不是数组:
if (value instanceof Array) {};//不适用于包含多个框架的网易
if( Array.isArray(value)){}; //对浏览器版本要求比较高
转换方法:
var colors = ["red", "blue", "yellow"];
colors.toString(); //"red", "blue", "yellow"
colors.toLocaleString(); //"red", "blue", "yellow"
colors.valueOf();//["red", "blue", "yellow"]
alert(colors);//"red", "blue", "yellow"
alert(colors.join(","));//"red", "blue", "yellow"
alert(colors.join("||"));//"1||2||3"
栈方法:LIFO
var colors = ["red", "blue", "yellow"];
colors.push("black");
colors.pop();//“black"
队列方法:LILO
var colors = ["red", "blue", "yellow"];
colors.push("black");
colors.shift();//“red"
重排序方法:
var values = [1,0,15,14,2];
values.reverse(); //[2, 14, 15, 0, 1]
values.sort();//[0, 1, 14, 15, 2]
function compare(value1, value2){
if(value1 < value2){
return -1;
}else if(value1 > value2){
return 1;
}else{
return 0;
}
}
values.sort(compare);// 0,1,2,14,15
操作方法:
//concat()将接收到的参数添加在末尾
var colors = ["red","green","blue"];
var colors2 = colors.concat("yellow",["black", "brown"]);
//colors2:"red","green","blue","yellow",black", "brown"
//slice()在当前数组中截取部分
var colors = ["red","green","blue","yellow"];
var colors2 = colors.slice(1);//["green","blue","yellow"]
var colors3 = colors.slice(1,3);//["green","blue"]
//splice()删除和插入
var colors = ["red","green","blue","yellow"];
var removed = colors.splice(0,2); //从第一项开始,删除两项
var colors = ["red","green","blue","yellow"];
var removed = colors.splice(1,0,"black"); //在第二项后,插入一项
var colors = ["red","green","blue","yellow"];
var removed = colors.splice(1,1,"black"); //在第二项后,删除一项后,再插入一项
位置方法:
var numbers = [1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4));
alert(numbers.indexOf(4,4));
alert(numbers.lastIndexOf(4));
迭代方法:
/*
迭代方法:函数(数组项的值,该项在数组中的位置,数组对象本身)
*/
//every():如果每一项都返回true,则函数返回true
var numbers = [1,2,3,4,5,4,3,2,1];
var result = numbers.every(function(item, index, array){
return (item > 2);
});
alert(result); //false
// some():如果有一项返回true,则函数返回true
var numbers = [1,2,3,4,5,4,3,2,1];
var result = numbers.some(function(item, index, array){
return (item > 2);
});
alert(result); //true
//filter():过滤出满足条件的值
var numbers = [1,2,3,4,5,4,3,2,1];
var result = numbers.filter(function(item, index, array){
return (item > 2);
});
alert(result); //[3,4,5,4,3]
//map():返回函数调用的结果并组成数组
var numbers = [1,2,3,4,5,4,3,2,1];
var result = numbers.map(function(item, index, array){
return (item * 2);
});
alert(result); //[2,3,6,8,10,8,6,4,2];
//forEach():没有返回值
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
alert(item);
});
缩小方法:
/*
迭代函数:(前一个值,当前值,项的索引,数组对象)
迭代所有项,返回一个最终结果
reduceRight是从数组的最后一项向前遍历
*/
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
//var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
});
alert(sum);
《JAVASCRIPT高级程序设计》第五章(1)的更多相关文章
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript 高级程序设计 第5章引用类型 笔记
第五章 引用类型 一.object类型 1.创建方法: 1.使用new 操作符创建 var person=new object() Person.name=”Nicholasa” Porson.age ...
- 《JavaScript 高级程序设计》第一章:简介
JavaScript 历史 JavaScript的诞生的主要是当时的 netspace 公司谋求为自己的浏览器 Navigator 添加一种脚本语言,以便在本地客户端进行一些行为操作,而这一功能的需求 ...
- JavaScript高级程序设计第20章JSON 笔记 (学习笔记)
第二十章 JSON 1.Json 可以表示三种类型的值: 1.简单值: 表示数值:5 表示字符串:“hello wrold”注表示字符串时必须使用双引号 2.对象: {“name”:“mi”,”ag ...
- JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...
- 读书时间《JavaScript高级程序设计》五:DOM
DOM(文档对象模型)是针对HTML文档的一个API,描绘了一个层次化的节点树,可以添加.移除.修改页面的某一部分. 一个简单的文档结构 <!DOCTYPE html> <html& ...
- 《JAVASCRIPT高级程序设计》第一章
在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...
- 《JavaScript高级程序设计》——第一章JavaScript简介
第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...
- javascript高级程序设计第5章,引用类型
object类型: 创建object实列的方式有两种,一种是new()方法,一种是对象字面量表示法: 第一种法方: var obj = new object(); obj.name = 'name' ...
- javascript高级程序设计第四章 变量、作用域和内存问题
变量包含两种,,基本类型和引用类型 基本类型是指一些简单的字段: 引用类型是☞由多个值构成的对象 引用类型的值是保存在内存中的对象,在javascript中是不允许直接访问内存中的位置; 函数的参数 ...
随机推荐
- HDU 2489 Minimal Ratio Tree 最小生成树+DFS
Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- php中var_dump() 打印出一个对象的时候,信息怎么看?
php 的一个依赖注入容器, 说白了,就是用php 的反射类,来在运行的时候动态的分析类具有的函数,以及动态分析函数的参数, 从而实例化类,并执行类的方法. 另外,php 中的 typehint 还是 ...
- Laravel Cache 使用
在项目中使用 laravel 的 cache 时,使用下面形式方法: $value = Cache::remember('users', $minutes, function() { return D ...
- linux命令学习-4-lsof
lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件. 在终端下输入ls ...
- Vim配置C++
当前用户的Vim配置便存储在文件 ~/.vimrc 中,该文件的每一行便是一个配置项 设置自动换行,在配置文件中加入如下代码: syntax onset tabstop=4set softtabsto ...
- 处理JSON格式的数据
JSON格式的数据是最常用的数据格式,处理方法的选择就显得比较重要了.我常用的一种是用对象来接收,然后保存在数组中,需要时直接从数组中取值.下面列出一个小例子. .h文件中: #import < ...
- css(二) block,inline和inline-block概念和区别
转: http://www.cnblogs.com/KeithWang/p/3139517.html 总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-leve ...
- make执行过程
转载自 陈皓<跟我一起写 Makefile> 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的.但也有时你也许只想让m ...
- Android实现渐显按钮的左右滑动效果
本示例演示在Android中实现带渐显按钮的左右滑动效果. 关于滑动效果,在我的上一篇博文中提到过,有兴趣的朋友可以访问: http://www.cnblogs.com/hanyonglu/archi ...
- java class加载机制及对象生成机制
java class加载机制及对象生成机制 当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载.链接.初始化三个步骤完成类的初始化.需要注意的是类的初始化和链接的顺序有可能是互换的. Cl ...