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包的.理由, ...
随机推荐
- Cocos2d粒子系统二
粒子系统的属性: 粒子的发射速度 重力模式(模式A): 重力 方向 速度 +- 变动 切向加速度 +- 变动 径向加速度 +- 变动 半径模式(模式B): 开始半径 +- 变动 结束半径 +- 变动 ...
- iOS开发——C篇&函数解析
关于函数,作为一个开发者事必须掌握的知识不管你在那一个领域,所以今天我就来说一说函数. 一:函数的介绍 关于函数,其实笔者在前面都已经演示不少了,其中用的最多的就是main函数,虽然直接说函数可能不太 ...
- MSP430 中断优先级
MSP430的中断优先级.打开关闭.中断嵌套 优先级顺序从高到低为: PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */ PORT1_VECTOR (4 * ...
- Android上传文件之FTP
android客户端实现FTP文件(包括图片)上传应该没什么难度.写下来就了为了记录一下,望能帮到新手. 需要用到 commons-net-3.0.1.jar,后面附上jar包. 直接上代码: /** ...
- Delphi从内存流中判断图片格式(好多相关文章)
废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件,例如jpg文件 是 FFD8 (从低位到高位就要反过来 D8FF 下面都是一样)BMP文件 ...
- C/C++跨平台的的预编译宏
我们在编译一些跨平台的程序的时候难免会遇到_WIN32 __linux__什么之类的SDK或者编译器环境预定义的宏.有很多,之前还分不清_WIN32 和WIN32的区别.不过这里还好有个列表,做个备 ...
- 深入理解JavaScript Hijacking原理
最近在整理关于JavaScript代码安全方面的资料,在查关于JavaScript Hijacking的资料时,发现关于它的中文资料很少,故特意整理一下. 一.JavaScript Hijacking ...
- poj3177 Redundant Paths
Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numb ...
- HDU_2027——统计元音
Problem Description 统计每个元音字母在字符串中出现的次数. Input 输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串. Output ...
- Android:ImageView应用之图片浏览器
ImageView控件实现的简单图片浏览器 一.纯显示图片: 引言: 读者在做这个东西的时候,需要自己把图片在源程序中导入. 读者要注意:所有导入的图片之前,图片的命名只可以是小写英文和数字. 效果图 ...