JavaScript第五章
JavaScript第五章
-
object类型
-
实现方法
-
new操作符跟Object函数
‘var person = new Object();’
-
用对象字面量表示
'var person = {
name : “Nicholas”,
age : 29
}; ’
-
-
对象的访问方法
-
点表示法
-
方括号表示法
’ var propertyName = “name”;
alert(person[propertyName]); ’
-
-
-
array类型
-
创建方法
-
'var colors = new Array(); ’
-
'var colors = [“red”, “blue”, “green”]; ’
-
-
读取操作(跟其他语言差不多)
-
检测数组
-
if (value instanceof Array){
//对数组执行某些操作
}
-
-
转换方法
-
'var colors = [“red”, “blue”, “green”]; // 创建一个包含 3 个字符串的数组
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green ’
-
toLocaleString()方法
经常也会返回与 toString()和 valueOf()方法相同的值
-
join()方 法
'var colors = [“red”, “green”, “blue”];
alert(colors.join(",")); //red,green,blue alert(colors.join("||")); //red||green||blue’
-
-
栈方法
-
push()方法
以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
-
pop()方法
从数组末尾移除后一项,减少数组的 length 值,然后返回移除的项
-
-
队列方法
-
shift()方法
移除数组中的第一个项并返回该项,同时将数组长度减 1
-
unshift()方法
在数组前端添加任意个项并返回新数组的长度
-
-
重排序方法
-
reverse():会反转数组项的顺序
-
sort():按升序排列数组项——即小的值位于前面,大的值排在后面
-
-
操作方法
-
concat()方法
可以基于当前数 组中的所有项创建一个新数组
-
slice()方法
法可以 接受一或两个参数,即要返回项的起始和结束位置
-
splice()方法
删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。
插入:可以向指定位置插入任意数量的项,只需提供 3个参数:起始位置、0(要删除的项数) 和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起 始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等
-
-
位置方法
-
indexOf()
> indexOf()方法从数组的开头(位 置 0)开始向后查找
-
lastIndexOf()
从数组的末尾开始向前查找
-
迭代方法
every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
-
归并方法
-
reduce()
从数组的第一项开始,逐个遍历 到后
-
reduceRight()
> 数组的后一项开始,向前遍历到第一项
-
-
Date 类型
-
Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日 期的毫秒数
-
参数分别是年份、基于 0的月份(一月是 0,二月是 1,以此类推)、月中的哪一天 (1 到 31)、小时数(0 到 23)、分钟、秒以及毫秒数。在这些参数中,只有前两个参数(年和月)是必 需的
-
-
继承的方法
-
toLocaleString()
Firefox 3.5
toLocaleString() — Thursday, February 01, 2007 12:00:00 AM toString() — Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
-
toString()
Chrome 4
toLocaleString() — Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time) toString() — Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
-
valueOf()
不返回字符串,而是返回日期的毫秒表示(便于比较大小)
-
时间的格式化方法
toDateString()——以特定于实现的格式显示星期几、月、日和年; toTimeString()——以特定于实现的格式显示时、分、秒和时区; toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年;
toLocaleTimeString()——以特定于实现的格式显示时、分、秒; toUTCString()——以特定于实现的格式完整的 UTC日期。 与
-
-
RegExp 类型
-
g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即 停止;
-
i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
- m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模 式匹配的项
-
-
/* * 匹配字符串中所有"at"的实例 */
var pattern1 = /at/g;
/* * 匹配第一个"bat"或"cat",不区分大小写 */
var pattern2 = /[bc]at/i;
-
实例方法
-
exec()
> 接受一个参数,即 要应用模式的字符串,然后返回包含第一个匹配项信息的数组;;或者在没有匹配项的情况下返回 null。
- test()
> 接受一个字符串参数。在模式与该参数匹配的情况下返回 true;否则,返回 false
-
RegExp构造函数属性
-
input $_ 近一次要匹配的字符串。Opera未实现此属性 lastMatch $& 近一次的匹配项。Opera未实现此属性 lastParen $+ 近一次匹配的捕获组。Opera未实现此属性 leftContext $` input字符串中lastMatch之前的文本 multiline $* 布尔值,表示是否所有表达式都使用多行模式。IE和Opera未实现此属性 rightContext $’ Input字符串中lastMatch之后的文本 -
Function 类型
-
v函数都是 Function 类型的实例,而且都与其他引用类型一样具有属性和方法。由于函 数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定(函数是对象)
-
声明方法
- 直接声明
function sum (num1, num2) {
return num1 + num2;
}
-
对象声明
var sum = new Function(“num1”, “num2”, “return num1 + num2”);
-
没有重载
-
在创建第二个函数时,实际上覆盖 了引用第一个函数的变量
-
函数声明与函数表达式
-
解析器会率先读取函数声明,并使其在执行 任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真 正被解释执行
-
-
作为值的函数
-
ECMAScript中的函数名本身就是变量,所以函数也可以作为值来使用。
-
函数内部属性
-
arguments
-
callee 属性,该属性是一个指针,指向拥有这个 arguments 对象的函数
-
为 了消除这种个函数的执行与函数名 紧密耦合的现象
-
-
this
-
为与 Java和 C#中的 this 大致类似
-
-
函数属性和方法
-
每个函数都包含两个 属性:length 和 prototype。其中,length 属性表示函数希望接收的命名参数的个数,prototype 是保存它们所有实例方法的真正所在(prototype 属性是不可枚举的,因此使用 for-in 无法发现)
-
apply()
- apply()方法接收两个参数:一个 是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是 Array 的实例,也可以是 arguments 对象
-
call()
-
在使用 call()方法时,传递给函数的参数必须逐个列举出来
-
-
基本包装类型
-
Boolean
-
Boolean 类型是与布尔值对应的引用类型。要创建 Boolean 对象,可以像下面这样调用 Boolean 构造函数并传入 true 或 false 值.
’ var falseObject = new Boolean(false); var result = falseObject && true; alert(result); //true
var falseValue = false; result = falseValue && true; alert(result); //false ’
-
-
Number
-
Number 是与数字值对应的引用类型。要创建 Number 对象,可以在调用 Number 构造函数时向其 中传递相应的数值
'var numberObject = new Number(10); ’
-
-
String
-
String 类型是字符串的对象包装类型,可以像下面这样使用 String 构造函数来创建。
‘var stringObject = new String(“hello world”);’
-
String 对象的方法也可以在所有基本的字符串值中访问到。其中,继承的 valueOf()、toLocale- String()和 toString()方法,都返回对象所表示的基本字符串值。
-
String 类型的每个实例都有一个 length 属性,表示字符串中包含多个字符
-
-
单体内置对象
-
“由 ECMAScript实现提供的、不依赖于宿主环境的对象,这些对 象在 ECMAScript程序执行之前就已经存在了
例如 Object、Array 和 String。 ECMA-262还定义了两个单体内置对象:Global 和 Math。
-
-
Global对象
-
没有全 局变量或全局函数;所有在全局作用域中定义的属性和函数,都是 Global 对象的属性
-
URI编码方法
-
Global 对象的 encodeURI()和 encodeURIComponent()方法可以对 URI(Uniform Resource Identifiers,通用资源标识符)进行编码,以便发送给浏览器
-
encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了 %20。而 encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符。
-
-
eval()方法 (听起来有点六批)
-
eval() 方法就像是一个完整的 ECMAScript解析器,它只接受一个参数,即要执行的 ECMAScript(或 JavaScript) 字符串
通过 eval()执行的代码被认为是包含该次调用的执行环境的一部分, 因此被执行的代码具有与该执行环境相同的作用域链。这意味着通过 eval()执行的代码可以引用在包 含环境中定义的变量
-
window 对象
-
在全局作用域中声明的所有变量和函数,就都成为了 window 对象的属性
-
在没有给函数明确指定 this 值的情况下(无论是通过将函数添加为对象的方法,还是通过调用 call()或 apply()),this 值等于 Global 对象
-
-
Math对象
- Math 对象的属性
属 性 说 明
Math.E 自然对数的底数,即常量e的值
Math.LN10 10的自然对数
Math.LN2 2的自然对数
Math.LOG2E 以2为底e的对数
Math.LOG10E 以10为底e的对数
Math.PI π的值
Math.SQRT1_2 1/2的平方根(即2的平方根的倒数)
Math.SQRT2 2的平方根
-
min()和 max()方法
-
,min()和 max()方法用于确定一组数值中的小值和大值。这两个方法都可以接收任意多 个数值参数
’ var max = Math.max(3, 54, 32, 16); alert(max); //54
var min = Math.min(3, 54, 32, 16); alert(min); //3 ’
-
-
舍入方法
-
Math.ceil()执行向上舍入,即它总是将数值向上舍入为接近的整数;
-
Math.floor()执行向下舍入,即它总是将数值向下舍入为接近的整数;
-
Math.round()执行标准舍入,即它总是将数值四舍五入为接近的整数(这也是我们在数学课 上学到的舍入规则)
-
-
random()方法
-
Math.random()方法返回大于等于 0小于 1的一个随机数
-
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
-
-
总结
这一章终于完了,感觉这一章好难,可能是我面向对象没有学好的原因,感觉有点不是很顺畅,那个regexp不是很懂。其他的还能勉勉强强混过去,后面自己再补补吧!!!
上一篇: Effective C++ 第7章读书笔记(总结)
下一篇: javascript第五章