JavaScript 高级程序设计 第5章引用类型 笔记
第五章 引用类型
一.object类型
1.创建方法:
1.使用new 操作符创建
var person=new object()
Person.name=”Nicholasa”
Porson.age=28
2. 适用对象字面量创建(推荐使用)
Var person={
Name:”Nicholasa”,
Age:28
}
2.访问对象属性
1.使用person.Name
2.使用peerson[“name”](如果括号内是变量可以遍历数组的所有属性)
2.ARRAY类型
1.创建方法:
1. 使用new 操作符创建
var person=new array()
2. 适用对象字面量创建(推荐使用)
Var person=[]
3.使用数组属性length属性可以为数组添加或删除项
2.检测数组
1.使用的是Instanceof 对于网页或全局作用域
If(value Instanceof array){
//对数组执行某些操作
}
2.array。isArray()方法 对于网页中使用了不同框架的检测,因为不同框架之间的构造函数不同
If(array.insArray(value)){
//对数组执行某些操作
}
3.转换的方法
所有对象都具有一下三种方法
toLocaleString () 返回的经常是与一下方法相同的值,当调用此方法时,与其他两个方法不同之处在于他调用的是每一项的数组中 toLocaleString (),所以有时返回值也不会总是和其他两种相同
toString() 返回的是由数组中每个值的字符串形式拼接而成以一个逗号分开的字符串
valueOf() 此方法的会的还是一个数组
4.栈方法(先进后出)
Push()可以接受任意数量的参数,并把他们添加到数组末尾,返回修改后数组的长度
Pop() 可以移除数组的最后一项,返回移除的项,减少数组长度
以上两种方法模拟栈
5.队列方法(先进先出)
Shift() 移除数组中的第一项,返回移除得项,数组长度减少,
Push()可以接受任意数量的参数,并把他们添加到数组末尾,返回修改后数组的长度
以上两种方法模拟 队列
Unshitf() 从数组前添加任意项并返回新的长度,
Pop() 可以移除数组的最后一项,返回移除的项,减少数组长度
以上两种方法模拟反方向的队列
6.重排序方法
1. Reverse()可以实行重新排序,但不灵活
2. Sort() 此方法会调用tosting()方法 然后比较得到的字符串,因此可以给sort()方法传递一个函数作为参数,此函数有两个参数,value1 value2 如果value1应该在value2之前返回一个负数,如果两个参数相等返回0,如果value1应该在value2之后折则返回一个正值。
Function compare(value1,value2){
If(value1<value2){
Return -1}
Else if(value1>value2){
Return 1}
Else{return 0}
}
7.操作方法
1.Concat() 可以基于当前数组的所有项新建一个数组
语法:Var newarray=concat(“新建的项”,[oldarray])
2.slice() 基于当前数组的一项或多项新建数组(截取数组中的项)
接收两个参数:分别是截取的开始项和结束项,(当传入的参数是一个时表示截取的时从此项到最后一项)
3.Splice()
删除:接收两个参数时表示:要删除第一项的起始位置和删除的项数
插入:接收3个参数:起始位置 删除的项数(0) 要插入的项(可以是任意项),
替换:可以向指定位置插入任一项同时也可以删除任意数量的项,接收3个参数
起始位置 删除的项数 插入的任意数量的项。
4.join() 接收一个参数(符号)把数组转化为字符串,以指定的符号分开,
8.位置方法
IndexOf() 表示从前往后查
lastIndexOf() 表示从后往前查
都接受两个参数:要查找项和查找起点的索引
此两种方法返回的是要查找的项在数组中的位置,如果没有查到则返回的是-1
9.迭代方法
Every()对数组的每一项运行给定函数,如果还函数对每一项都返会ture,则返回Ture
Filter()对数组的每一项运行给定函数,返回该函数会返回ture的项组成的新数组
foEach()对数组的每一项运行给定函数,该方法没有返回值
Map()对数组的每一项运行给定函数,,返回每次函数调用的结果组成的数组
Some()对数组的每一项运行给定函数 如果该函数对任意一项返回ture,则返回ture
如:
Var numebers=[1,2,3,4,5,4,3,2,1]
Var everyResult=numebers.every(function( item,index,array){
Return(item>2)
})
Alert(everyResult) //false
Var everyResult=numebers.some(function( item,index,array){
Return(item>2)
})
Alert(everyResult) //ture
Var filterResult=numebers.filter(function( item,index,array){
Return(item>2)
})
Alert(filterResult) //[3,4,5,4,3]
Var filterResult=numebers.map(function( item,index,array){
Return(item*2)
})
Alert(filterResult) //[2,4,6,8,10,8,6,4,2]
10. 归并的方法
Reduce() 从左到右迭代数组所有项,然后构建一个最终返回值
reduceRight()从右到左迭代数组所有项,然后构建一个最终返回值
以上方法接收两个参数:一个在每一项上调用的函数和(可选)作为归并基础的初始值。调用的函数可接受四个参数:前一个值 当前值 项的索引 数组对象。
用此方法可以求数组中所欲项之和:
Var values=[1,2,3,4,5]
Var sun=values.reduce(function()prev,cur,index,array){
Return prev+cur;})
Slert(sun) //15
3.Date类型
略
4.RegExp类型
语法:var expression=/pattern/flags;
Pattern:是任何简单或复杂的正则表达式
Flags:表示表正则达式的行为取值有三个:g, i m.
g:全局模式,即模式将被用于所有字符串,而非在发现第一个匹配项时停止
i:表示不区分大小写
m:表示多行模式。即达到一行末尾时还会继续查找下一行是否存在。
注意:模式中使用所有的元字符都必须转义
RegExp 属性
Global:布尔值,表示是否设置了 g标志
ignoreCase: 布尔值,表示是否设置了 i
lastIndex:整数,表示开始搜索下一个匹配项的起始位置,从0开始;
Multiline:布尔值,表示是否设置了m标志
Source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
RegExp方法
1. Exec() 接收一个参数,即要应用模式的字符串,然后返回包含第一个匹配信息的数组,或则在没有匹配项的情况下返回null。
返回的数组包含两个额外的属性:index input
Index:表示匹配项在字符串中的位置,
Input:表示应用正则表达式的字符串。
- Test() 接收一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false.
5.Founction类型
1.声明:函数声明 此方法不会因为声明和调用的 位置而受到影响
Function sum(num1,num2){
Retuen num1+num2
}
函数表达式:声明必须在调用的前面
Var sum=function(num1,num2){
Return num1+num2
}
2.javascript函数没有重载
重载:由于函数参数传递的是数组形式(后面有介绍),所以在JavaScript中函数没有重载(同名函数只会覆盖)
3.函数名本身就是变量,所以函数可以作为值来使用,
4.函数内部的属性
a) Arguments:他是一个类数组对象,包含着传入函数中的所有参数,它还有一个名为 callee的属性,该属性是一个指针,指向拥有Arguments对象的函数
类如计算阶乘:
Function factorial(num){
If(num<1){
Return 1
}else{
Return num*factorial.callee(num-1)
}
b) this 引用的是函数据以执行的环境对象。
c) caller这个属性保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为null.
5.函数属性和方法
1.属性:length:表示函数希望接收命名参数的个数
Prototype(原型) 第六章介绍
2.方法:每个函数都有两个非继承而来的方法apply() call()
两个方法都是在特定的作用域中调用函数,实际上就等于设置this的值,
Apply()方法都接受两个参数:一个是在其中运行函数的作用域,另一个是参数数组
如:function sum(num1,num2){
Return num1+num2
}
Function callSum(num1,num2){
Return sun.apply(this,arguments)
} 出入的是argument 此处还可以传递数组
Call()方法与apply()相同,但在第二个参数传入的必须是逐个列举出来。
使用call()方法时 arguments 换成列举的每个参数。
- Call()方法与apply()可以扩充函数的作用域。
如:window.color=”red”
Var o={color:blue}
Function saycolor(){
Alert(this.color)
}
Saycolor(); //red
Saycolor.call(this) //red
Saycolor.call(window) //red
Saycolor.call(o) //blue
以上代码运行的结果,因为saycolor()也是全局函数定义,在全局作用域中调用时显示的是“red”.当运行到Saycolor.call(o) 函数的执行环境就不一样了,this 对象指向了o, 所以显示“blue”
- ECMAscript5还定义了一个方法,bind()这个方法创建一个实例,其this值会被绑定到传给bind()函数的值
以上代码:var objectsaycolor=saycolor.bind(o)
Objectsaycolor() ; // blue
6.基本包装类型
1.Boolean类型
2.Number 类型
方法:
toFixed()会按照指定的小数位返回数值的字符串表示
3.string类型
属性:length
方法:
1.字符方法:
charAt()和charCodeAt():都接受一个参数,即基于0的字符位置。
charAt()返回的是单字符字符串的形式返回指定位置的那个字符
charCodeAt()返回的是指定位置的那个字符的字符编码
2.字符串操作的方法 :
Concat() 用于将一个或多个字符串拼接起来成为新的字符串
Slice() substr() substring() 返回被操作字符串的一个子串,他们都接受一个或两个参数。Slice() substring() 第一个参数时开始位置 第二个参数是子字符串最后一个字符后面的位置。substr() 第二个参数表示返回字符串的个数。
注意:当传入的参数时负值时他们的行为都不相同
3.字符串位置方法
indexOf() 从开始到末尾查询
lastindexOf() 从末尾到开始查询
都接收两个参数:要查询的字符串 和 查询的开始位置 如果没有找到子字符串则返回-1;
4.ECMAscript5 定义了 trim()方法 这个方法创建一个子字符串的副本,删除前置和后缀的所有空格
5.字符串的大小写转换
toLowerCase()
toUpperCase()
6.字符串的模式匹配
1.Match() 在字符串上调用此方法(与exec())相同
此方法只接受一个参数,要么是正则表达式或REgExp对象
2.Search() 与Match()的参数相同,返回的是字符串第一个匹配的索引,如果没有找到返回的是-1.
3. Replace() 方法,接收两个参数,第一个可以是RegExp对象或一个字符串,第二个参数可以是一个字符串或一个函数。如果第一个参数是字符串,那么只会替换第一个字符串。想要替换所有字符串,唯一办法就是提供一个正则表达式,指定(g)标志。
4. Split() 基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放到一个数组中。这个分隔符可以是字符串也可以是RegExp对象。Split() 可以接受第二个参数 用于指定返回的数组指定大小(length)
5.localeCompare()
比较两个字符串并返回下列值中的一个
a)如果字符串在字母表中应该排在字符串参数之前,则返回一个负数
b) 如果字符串等于字符串参数 则返回0
c)如果字符串在字母表中应该排在字符串参数之后 则返回一个正数
6.formCharCode()静态方法 接收一个或过个字符编码,然后把它们转换为字符串
7.单体内置对象
1. Global 对象
2.evel() 方法 接收一个参数:即是要执行 JavaScript的字符串 此方法就像一个完整的ECMAscript 解析器
如: evel(“ alert(“hi”)”)=alert(“hi”)
3. Global 对象的属性
Undefined
NaN
Infinity
Array
............
- Window 对象
8.Math 对象
1. Min()和 max()方法
2.舍入
Ceil() 向上取整
Floor() 向下去整
Round() 四舍五入
3.Random()返回大于等于0小于1的随机数
4.其他方法:
abs(num) 求绝对值
...........
JavaScript 高级程序设计 第5章引用类型 笔记的更多相关文章
- JavaScript高级程序设计第20章JSON 笔记 (学习笔记)
第二十章 JSON 1.Json 可以表示三种类型的值: 1.简单值: 表示数值:5 表示字符串:“hello wrold”注表示字符串时必须使用双引号 2.对象: {“name”:“mi”,”ag ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript高级程序设计学习(四)之引用类型
在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...
- JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...
- JavaScript高级程序设计第三版-读书笔记(1-3章)
这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript 提供核心语言功能 DOM 提供访问 ...
- javascript高级程序设计第5章,引用类型
object类型: 创建object实列的方式有两种,一种是new()方法,一种是对象字面量表示法: 第一种法方: var obj = new object(); obj.name = 'name' ...
- 读书笔记 - js高级程序设计 - 第五章 引用类型
引用类型 和 类 不是一个概念 用typeof来检测属性是否存在 typeof args.name == "string" 需要实验 访问属性的方法 .号和[] 一般情况下要 ...
- javascript高级程序设计第三章的一些笔记
[TOC] 1. 语法 1.1 区分大小写 变量.函数名和操作费都区分大小写. 1.2 标识符 标识符指变量.函数.属性的名字,或者函数的参数.标识符按以下规则组合: 第一个字符必须是一个字母,下划线 ...
- JavaScript高级程序设计学习(四)之引用类型(续)
一.Date类型 其实引用类型和相关的操作方法,远远不止昨天的所说的那些,还有一部分今天继续补充. 在java中日期Date,它所属的包有sql包,也有util包.我个人比较喜欢用util包的.理由, ...
随机推荐
- 文件头 MAGE_FILE_HEADER
IMAGE_FILE_HEADER这个结构的定义如下: typedef struct _IMAGE_FILE_HEADER { 00h WORD Machine; //运行平台 02h WORD Nu ...
- 编程的宗派(OOP与FP孰优孰劣)--王垠
编程的宗派 总是有人喜欢争论这类问题,到底是"函数式编程"(FP)好,还是"面向对象编程"(OOP)好.既然出了两个帮派,就有人积极地做它们的帮众,互相唾骂和鄙 ...
- Mysql时间戳开始时间1970-01-01 00:00:00和PHP date慢8小时
mysql> select unix_timestamp('1970-01-01 00:00:01');+---------------------------------------+| un ...
- 2015第28周六SVN和Git
svn作为一个优秀源码版本的管理工具,可以适合绝大多数项目.但是因为它的采用中心化管理,不可避免的存在本地代码的备份和版本管理问题.也就是说对于尚未或暂无法提交到Subversion服务器的本地代码来 ...
- [又是BUG]常见的RuntimeException
妈蛋这异常那异常都是异常,不能忍了! 下面总结一些经常遇到的异常(RuntimeExecption): 算术异常类:ArithmeticExecption 数组下标越界异常:ArrayIndexO ...
- hdu-1598
思路: 首先如果想到了Kruskal算法,那么下一步我们可能马上会想:那我们就从头开始写这个算法吧.然后一写就很容易发现一个问题——如果按照正常的Kruskal算法来做,那么start到end的舒适度 ...
- OSI七层结构
- PHP的输出缓冲区
什么是缓冲区?简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料.其实缓冲区最本质的作用就是,协调 ...
- hdu 4848 搜索+剪枝 2014西安邀请赛
http://acm.hdu.edu.cn/showproblem.php?pid=4848 比赛的时候我甚至没看这道题,事实上不难.... 可是说实话,如今对题意还是理解不太好...... 犯的错误 ...
- 跟我一起学extjs5(22--模块Form的自己定义的设计)
跟我一起学extjs5(22--模块Form的自己定义的设计) 前面几节完毕了模块Grid的自己定义,模块Form自己定义的过程和Grid的过程类似,可是要更复杂一些.先来设计一下要完 ...