javascript 高级程序设计 六
上一节还有一个注意的地方:建议所有函数的必需参数使用命名参数,而非必须的参数使用对象来封装。
通过这几天的读书,发现了一个深入了解所学知识的一个捷径——读书。本来我在计算机这方法的所有知识一般都是从视频中摸索着学习的,
所以后来就养成了一个习惯,感觉学点东西没有视频讲解自己都有点学不下去。但是实习了以后发现没有那么一大把的时间来供我学习看视频,
幸好程序袁有生俱来的危机感使我意识到应该找到另一个学习到东西的途径,于是我就开始了阅读,当然我们阅读的时候一定要结合自己在项目
中遇到的问题,带着疑问来读书。这样我们就摆脱了一个大坑——都死书,死读书。
所以我再这里建议在刚刚学习计算机的时候我们应该看一点视频这样我们可以更快的发现自己的兴趣点,到了有一定基础的时候,应该换一
种得到知识的途径,因为书中记载的还是比较详细,并且我们得到一些知识也是一些人从书上得到的,然后转达给我门,但是每个人看书时认为
知识的重点都是不同的,我们从别人那里汲取的养分都是他们吸收完的,虽然这样再某种意义上我们可以更快的'入门',但是缺少了一种快感,一种
经过自己的思考后得到知识的快感。
好了,说了这么多总之一句话有条件的同志们开始读书吧。开始我们今天的内容。
Array数组
再这里建议大家创建数组和创建对象一样,我们都应该使用字面量表示法(如下),因为使用字面量来创建数组或者对象就不会调用Array或Object
的构造函数。提高一点效率。
var arr = ['red','green','blue'];
var obj = {
name: 'kim',
age: 12
};
array.length:不是一个只读的属性,还可以给数组赋值长度。
var arr = ['red','green','blue'];
arr.length = 4;
arr[3] = 'black';
alert(arr[3]);
检测数组instanceof,isArray:
对于一个网页,或者全局环境来书使用instanceof操作符就可以检测数组。
if(value instanceof Array){
//dosomething
}
instanceof他假定单一的全局执行环境,当网页包含多个框架,那就存在两个全局执行环境,如果你从第一个执行环境中传入到另一个执行环境一个数组
那么这个数组就与第二个全局执行环境的原生数组分别具有自己不同的构造函数。所以为了解决这个弊端,ECMAScript 5 中新增了Array.isArray();方法。
if(Array.isArray(arr)){
//dosomething
}
join:
var colors = ['red','blue','green'];
alert(colors.join('||'));//red||blue||green
模拟栈、队列
栈都操作的都是末端元素,我们可以用push(),来推入元素,用pop();来弹出元素。(LIFO)
var colors = ['red','blue','green'];
colors.push('black');
alert(colors[3]);//black
var item = colors.pop();
alert(item);//black
队列是在末端插入,在前端移除,用push()来推入,用shift();移除元素(FIFO)
var colors = ['red','blue','green'];
colors.push('black');
alert(colors[3]);//black
var item = colors.shift();
alert(item);//red
有shift就有unshift();就是在前端插入元素。这里就不再赘述了
数组排序:
reverse()就是反转数组顺序。
var arr = [1,2,4,5,3];
arr.reverse();
alert(arr);//35421
因为上面的方法不够灵活,就出现了 sort();
sort();方法会把数组中原有的元素都调用对应的toString()方法,然后比较String的大小,按照从小到大的顺序进行排序。
var arr = [0,1,5,10,15];
arr.sort();
alert(arr);//0,1,10,15,5因为字符串"10"位于字符串"5"的前面,所以这个方法也不狗灵活,因此sort()还可以接受一个比较函数
sort()接受一个比较函数,比较函数就是返回1说明第一个参数应该位于第二个参数之后,0就是两个参数相等,-1第一个参数位于第二个参数之前
function compare(value1,value2){
return value2 - value1;//意味着有大到小排序
}
var values = [0,1,5,10,15];
values.sort(compare);
alert(values);//15,10,5,1,0
其他array方法:
var colors = ['red','green','blue'];
var colors2 = colors.concat('yellow',[black,white]);//concat把接受到的参数一个个附加到原有数组的副本的后面,然后返回这个副本。
alert(colors2);//red,green,blue,yellow,black,white
var colors3 = colors.slice(1);//slice就是可以断章取意(基于这个数组的一个或多个重新创建一个数组),只有一个参数就是从参数这个下标到数组的最后,
var colors4 = colors.slice(1,2); //有两个参数就是从第一个参数这个下标开始取第二个参数这么长。
alert(colors3);//green,blue
alert(colors4);//green,blue
concat和slice都不会影响原有数组
var remove = colors.splice(0,1);//splice中只有两个参数那么说明是删除从第0个开始取到1这个长的元素
alert(colors);//green,blue
alert(remove);//red
var add = colors.splice(1,0,'yellow','black');//从下标是1的位置开始删除0个元素,然后再插入两个yellow,black两个元素
alert(colors);//green,yellow,black,blue
alert(add);//返回一个空数组
var replace = colors.splice(1,1,'red','pink');//就是在下标是1的位置删除1个元素,然后再插入两个red,pink两个元素
alert(colors);//green,red,pink,black,blue
splice操作的就是原有数组
indexOf()和lastIndexOf();接受两个参数一个是要查找的元素,第二个是查找起点位置的索引,indexOf()从前往后,lastIndexOf()从后往前
迭代方法:
every();就是迭代数组中的每一个元素,当所有元素都满足给定函数,并都返回true,则返回true
some();就是迭代数组中的每一个元素,只要有一个元素满足给定函数,并都返回true,则返回true
filter();就是迭代数组中的每一个元素,只要有一个元素满足给定函数,并都返回true,则返回这些项组成的数组
var numbers = [1,2,3,4,5,5,6,7,1];
var result = numbers.every(function(item,index,array){
return (item>4);
});
alert(result);//false
var result2 = numbers.some(function(item,index,array){
return (item>4);
});
alert(result2);//true
var result3 = numbers.filter(function(item,index,array){
return (item>4);
});
alert(result3);//5,5,6,7
map();对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组
var numbers = [1,2,3,4,4,3,2,1];
var results = numbers.map(function(item,index,array)){
return item * 2;
};
alert(results);//2,4,6,8,8,6,4,2
foreach();便利数组的每一项,对每一项执行一些自定义的操作,没有返回值
var numbers = [1,2,3,4,4,3,2,1];
numbers.foreach(function(item,index,array)){
//dosomething;
};
javascript 高级程序设计 六的更多相关文章
- JavaScript高级程序设计(六):关键字 void 和 delete 使用
一.void 1.概述:JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. 2.语法:JavaScript void (express) 或则 JavaScri ...
- 《Javascript高级程序设计》阅读记录(六):第六章 下
这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...
- 《Javascript高级程序设计》阅读记录(五):第六章 上
这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
- javascript 高级程序设计 十二
1.组合使用原型模式和构造函数模式: 由于原型模式创建对象也有它的局限性------有智慧的人就把原型模式和构造函数模式进行了组合. function Person(name, age, job){/ ...
- 读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...
- 《Javascript高级程序设计》阅读记录(七):第七章
<Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- 《JavaScript高级程序设计》笔记——第一章到第三章
2019年,新年伊始,我打算好好重读一下<JavaScript高级程序设计>这本前端必备经典书.每天半小时. 以下内容摘自<JavaScript高级程序设计> 2019-2-1 ...
随机推荐
- 吴裕雄 32-MySQL 导入数据
1.mysql 命令导入使用 mysql 命令导入语法格式为:mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql)实例:# mysql -uroot -p123456 ...
- 学JS的心路历程 -函式(三)this
this是什么,取决于被呼叫的呼叫地点. 昨天有提到说,呼叫函式时候会传递隐含参数:arguments和this并讲解了arguments,今天我们就来探讨this吧! 什么是this 我们都会呼叫函 ...
- idea 这样 会快点
最近使用IDEA来开发JAVA应用,对IDEA的界面很有爱,但是缺受不了它的运行速度.每次运行都要编译,所以就有了这边文章 总感觉IDEA的编译速度比eclipse慢,eclipse每次保存都自动 ...
- Xshell 连接ubuntu虚拟机失败解决办法
当我们在VMWare上安装好Ubuntu虚拟机后,有时候会需要使用多个terminal窗口,但是在虚拟机中多个窗口互相切换查看不方便,这时候用物理机的xshell工具连接到虚拟机中去就显得很方便.直接 ...
- appium API接口
appium API接口 标签(空格分隔): appium常用api 1.contexts contexts(self) 返回当前会话的上下文,使用可以识别H5页面的控件: driver.contex ...
- 【Django】关于前端配置
今天在网上课程了学了一下前端配置,感觉搭这个环境安装了不少东西,自己都有点混乱,现在整理一下思路: 1.nvm 即Note Version Manager用来管理node版本的工具: windows版 ...
- pyinstaller linux系统下打包python源文件
将python程序放在其他linux服务器中执行,通常linux服务器中默认安装python2.6,很多情况下需要升级为2.7 且要安装程序中需要的第三方模块,配置较为麻烦,所以通过在本地linux ...
- php递归获取目录下所有文件
<?php function getFileList($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($hea ...
- centos 7 下多网卡绑定+ vlan 网卡配置
一.前言 CentOS7之前系统提供给用户的是bonding driver来实现链路聚合,实际上bonding适用于大多数应用.Bonding driver的架构是由内核空间完全控制.管理. Team ...
- ubuntu下java的安装即使用
1.首先在官方网站(点击可以下载)下载最新的JDK,要选用self extracting installer 2.在/usr/下新建java目录,把下载的文件放到这个目录下 sudo mkdir /u ...