javascript高级程序设计 读书笔记2
第五章 引用类型
对象是引用类型的实例,引用类型是一种数据结构,将数据和功能组织在一起。描述的是一类对象所具有的属性和方法。对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数俩创建的,构造函数本身就是一个函数,只不过该函数试处于创建新对象的目的而定义的。 eg:
var person = new Object();
1.创建Object实例的方式有两种 一:new+Object 二:对象字面量
var person = new Object(); var person = {
person.name = "Andy"; name:"Andy", //这里是逗号 属性可以用引号括 起来 表示为字符串
person.age = 29; age:29}; //29后面不要+,因为是最后一个属性
对象字面量语法推荐只在考虑对象属性名的可读性时使用。,在用此方法定义对象时,不会调用Object构造函数。一般的开发人员更青睐字面量语法,因为代码少,有封装的感觉。字面量也是向函数传递大量可选参数的首选方式。eg:
function displayInfo(args){
var output = "";
if(typeof args.name == "string"){
output+="Name:"+args.name+"\n";
}
if(typeof args.age == "number"){
output+="age:"+args.age+"\n";
}
alert(output);
}
displayInfo({
name:"Andy",
age:29
}); //Name:Andy
//age:29
displayInfo({
name:"zhou",
});//Name:zhou
2.一般来说,访问对象属性时使用点表示法,但是如果属性名中包含会导致语法错误的字符,或者属性名使用的时关键字或者保留字,就要使用【】方括号表示法
eg:person[" first name"],通常,除非必须要使用变量来访问属性,否则建议使用点表示法。
3.Array类型 数组是一组数据的有序列表,但是ES中的数组可以保存任意类型的数据,并且数组打大小时可以动态调整的。
4.创建数组的基本方式:一 使用Array构造函数 var colors =new Array( x );参数可以为数值表示数组的初始长度
也可以为字符,表示初始数组的内容
二 数组字面量表示法 var color = [args] 参数可以为空,或者时实际数组值,用逗号隔开,但是最后一个字符不可以是逗号
与创建对象一样,字面表示法不会调用Array构造函数.
5.在读取和设置数组的值时,要使用方括号 并提供相应值的基于0的数字索引。eg:colors[2]//读取第三项 设置:colors[2] = "red"; 如果超出数组长度则自动增加到该索引值+1的长度。
eg: var num = [0,1,2,3,4] num[0] = 15//设置 num.length= 5;//增加5在末尾 num[99] =99; //第100项为99 6-98为undefined
6.可以用instanceof 来检测某个对象是不是数组 value instanceof Array; 但是这个是假设在只有一个全局变量的环境下,如果包含多个框架就要用Array.isArray( X ) 来检测。
7.数组有 toLocaleString(),toString()和valueOf()转换方法。调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。valueOf()返回的还是数组。
join()使用不同的分隔符来构建这个字符串,只接受一个参数,即用作作为分隔符的字符串,然后返回包含所有数组项的字符串
eg:num= [1,2,3,4,5]; num.join("!");//1!2!3!4!5 如果不传参数或者参数为undefined 则使用逗号作为分隔符
push()接受任意数量的参数,把他们逐个添加到数组末尾,返回修改后的 数组长度
pop() 从数组未移除最后一项,减少length的值-1,返回 移除的项
shift()从数组未移除第一项,减少length的值-1,返回 移除的项
unshift()接受任意数量的参数,把他们逐个添加到数组头部,返回修改后的 数组长度
增加的返回数组长度,减少的返回删除项
reverse()反转数组项的顺序
sort()调用toString()转型方法,对数组进行排序,unicode编码小的排在前面。 由于是toString()所以[0,1,5,10,15].sort()//0,1,10,15,5
sort()方法可以接受一个比较函数作为参数。比较函数接受两个参数,如果第一个参数应该位于第二个之前返回一个负数
如果第一个参数应该位于第二个之后返回一个整数
相等则返回0;
函数如下: function compare(value1,value2){ 或者 function compare(value1,value2){
if(value1<value2) return value1-value2
{return -1;} }
else if(value1>value2) var values = [0,1,5,10,15];
{return 1;} values.sort(compare);
else{return 0;}
} alert(values);//0,1,5,10,15
var values = [0,1,5,10,15];
values.sort(compare);
alert(values);//0,1,5,10,15
8.concat(),基于当前数组创建一个数组副本,并将接收的参数(任意类型)添加到副本的末尾,最后构建一个新的数组。
slice(),基于当前数组创建一个新数组,接受1-2个参数,即要返回的起始项和结束位置(不包括结束位置)没如果只有一个参数,则为起始项到一直到数组末尾,不影响原始数组。
splice() 删除:接受2个参数 要删除的第一项的位置和要删除的项数 splice(1,2)删除第二 第三项
插入:接受3个参数 起始位置,0,要插入的项 splice(2,0,"red","green") 从第三项开始插入red green
替换: 接受三个参数 起始位置,要删除的项数,要插入的项 splice(2,1,"red","green")删除第三项,插入red green
9.查找位置 indexOf( x ,【Y】)X为要查找的值,从前开始,返回值为X索引位置,Y为可选参数表示起始位置
lastindex 从后开始
charAt(num) 查找索引位置为num的值
10.迭代方法
以下五个方法接受两个参数:要在每一项上运行的函数和[运行该函数的作用域对象]
every() 对数组中的每一项运行给定函数,如果函数对每一项都返回true 则返回true
some() 对数组中的每一项运行给定函数,如果某一项返回true 则返回true
filter()对数组中的每一项运行给定函数,挑选出返回true的项成立一个新的数组
map()在原数组的上对每一项运行指定函数,返回每次函数调用的结果组成的数组
forEach(),对数组的每一项运行指定函数,没有返回值
var numbers = [1,2,3,4,5,6,7]
var everyResult = numbers.every(function(item,index,array){
return (item>2);
});//false
var everyResult = numbers.some(function(item,index,array){
return (item>2);
});//true
var everyResult = numbers.filter(function(item,index,array){
return (item>2);
});//[3,4,5,6,7]
var everyResult = numbers.map(function(item,index,array){
return (item*2);
});// [2,4,6,8,10,12,14]
11.reduce() //从第一项开始,逐个遍历到最后
reduceRight()//最后一项开始
接受两个参数:在每一项上的函数和[作为归并基础的初始值]
var values = [1,2,3,4,5];
var sum = sum.reduce(function(pre,cyr,index,array){
return prev+cur;
});//15
javascript高级程序设计 读书笔记2的更多相关文章
- javascript高级程序设计读书笔记-事件(一)
读书笔记,写的很乱 事件处理程序 事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别 没有DOM1 同样的事件 DOM0会顶掉html事件 因为他们都是属性 而 ...
- javascript高级程序设计读书笔记
第2章 在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...
- Javascript高级程序设计读书笔记(第六章)
第6章 面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...
- JavaScript高级程序设计-读书笔记(7)
第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...
- JavaScript高级程序设计 读书笔记
第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...
- JavaScript高级程序设计 读书笔记 第一章
JavaScript是一种专门为与网页交互而设计的脚本语言 JavaScript实现 ECMAscript---核心 DOM---文档对象模型 BOM---浏览器对象模型
- Javascript高级程序设计读书笔记(第二章)
第二章 在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...
- JavaScript高级程序设计-读书笔记(6)
第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l 简单值:使用与JavaScript相同的语法,可以在JS ...
- JavaScript高级程序设计-读书笔记(5)
第13章 事件 1.事件流 事件流描述的是从页面中接收事件的顺序.IE的事件流是事件冒泡流,而Netscape Communicator的事件流是事件捕获流. (1)事件冒泡,即事件开始时由最具体的元 ...
- JavaScript高级程序设计-读书笔记(4)
第11章 DOM扩展 1.选择符API Selector API Level 1 的核心是两个方法:querySelector()和querySelectorAll().在兼容的浏览器中,可以通过Do ...
随机推荐
- Shapely中的几何图形操作
Geometric Objects object.area Returns the area (float) of the object. object.bounds Returns a (minx, ...
- 在Kali Linux下安装与配置OpenVas
以下是我的Kali版本号: 执行安装命令: apt-get install openvas 安装完成后可以在漏洞分析菜单下查看到OpenVas相关选项. 以下为安装完成后需要用到的几个命令: open ...
- 在eclipse中安装上genymotion插件
1.安装genymotion-vbox,选择安装目录. 具体安装过程可见http://www.cnblogs.com/wuyudong/p/5601897.html 2.登录并创建模拟器 3. ...
- 双十一来了,别让你的mongodb宕机了
好久没过来吹牛了,前段时间一直赶项目,没有时间来更新博客,项目也终于赶完了,接下来就要面临双十一这场惊心动魄的处女秀考验, 我们项目中会有一个wcf集群,而集群地址则放在mongodb中,所以mong ...
- Sql Server之旅——第四站 你必须知道的非聚集索引扫描
非聚集索引,这个是大家都非常熟悉的一个东西,有时候我们由于业务原因,sql写的非常复杂,需要join很多张表,然后就泪流满面了...这时候就 有DBA或者资深的开发给你看这个猥琐的sql,通过执行计划 ...
- Html5拖拽复制
拖拽是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖拽是标准的一部分,任何元素都能够拖拽. Html5拖拽非常常见的一个功能,但是大部分拖拽的案例都是一个剪切的过程, 项目中需 ...
- 记录Sqlserver2012附加Sqlserver2008的数据库出错的解决方案
一.摘要 最近在实验里面用台式编写好了一个软件,想移植到家里的笔记本上.在附加数据的时候却出现了错误,具体也没有提示什么错误,反正就是附加失败了. 二.解决方案 在网上看了一些资料,有的说[低版本不能 ...
- PHP6连接SQLServer2005的方法
1.修改php.ini将extension=php_mssql.dll的注释删除保存. 修改php.in将mssql.secure_connection = Off改为mssql.secure_con ...
- Windows10 利用 Docker 配置 TensofFlow 深度学习工具
TensorFlow 这个不用多介绍了吧,大家都知道,Google的开源深度学习软件库,官网点这里:https://www.tensorflow.org/ 当然这个工具官方支持装在 Ubuntu 和 ...
- 002.ICMP--拼接ICMP包,实现简单Ping程序(原始套接字)
一.大致流程: 将ICMP头和时间数据设置好后,通过创建好的原始套接字socket发出去.目的主机计算效验和后会将数据原样返回,用当前时间和返回的数据结算时间差,计算出rtt. 二.数据结构: ICM ...