javascript 权威指南
1、对象
1.1、序列话对象
JSON.stringify() 和 JSON.parse() 用来序列化和还原 javascript 对象。
var o = {x:1, y:{z:[false,null,""]}}; // 定义对象
var s = JSON.stringify(o); // s是 "{"x":1,"y":{"z":[false,null,""]}}"
var p = JSON.parse(s); // p 是 o 的深拷贝
2、数组
2.1、push() 和 pop()
push() 方法在数组的尾部添加一个或多个元素,并返回数组新的长度。
pop() 方法刚相反,它删除数组的最后一个元素,减少数组长度并返回它删除的值。
注意:两个方法都修改并替换原始数组而非生成一个修改版的新数组
var arr = []; // arr: []
arr.push( 1, 2 ); // arr: [1, 2] 返回:2
arr.pop(); // arr: [1] 返回:2
arr.push( [4, 5] ); // arr: [1, [4,5]] 返回:2
arr.pop(); // arr: [1] 返回:[4, 5]
arr.pop(); // arr: [] 返回:1
2.2、map()
map() 方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。
var arrA = [1, 2, 3];
var arrB = a.map( function( x ) {
return x * x; // arrB = [1, 4, 9]
});
2.3、filter()
filter() 方法返回的数组元素是调用的数组的一个子集。传递是函数是用来逻辑判定的:该函数返回 true 或 false。
var arrA = [5, 4, 3, 2, 1];
var arrB = arrA.filter( function( x ) {
return x < 3; // [2, 1]
});
var arrC = arrA.filter( function( x, i ) {
return i % 2 === 0; // [5, 3, 1]
});
2.4、every() 和 some()
every() 和 some() 方法是数组的逻辑判定:它们对数组元素应用指定的函数进行判定,返回 true 或 false。
3、函数
3.1、函数的调用
- 作为函数
- 作为方法
- 作为构造函数
- 通过它们的 call() 和 apply() 方法间接调用
3.2、作为值的函数
函数可以定义,也可以调用,也是值,可以将函数赋值给变量。
function square( x ) {
return x * x;
}
var s = square; // 现在 s 和 square 指向同一个函数
square( 4 ); //
s( 4 ); //
3.3、闭包
函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的。为了实现这种词法的作用域,JavaScript 函数对象是内部状态不仅包含函数的代码逻辑,还必须引用当前的作用域。函数对象可以通过作用域链相互关联起来,函数体内的变量都可以保存在作用域内,这种特性被称为“闭包”。
注:闭包是指函数变量可以被隐藏于作用域链之内,因此看起来是函数将变量“包裹”了起来。
例1:
var integer = (function() {
var count = 0;
return function() {
return count ++;
}
}());
定义了一个立即调用的函数,因此是这个函数返回值赋值给变量 integer。嵌套的函数是可以访问作用域内的变量的,而且可以访问外部函数中定义的 count 变量。当外部函数返回之后,其他任何代码都无法访问 count 变量,只有内部的函数才能访问它。
例2:
function counter() {
var n = 0;
return {
count: function() {
return n++;
},
reset: function() {
return n = 0;
}
}
}
var c = counter(), d = counter();
c.count(); // => 0
d.count(); // => 0
c.reset(); // count() 和 reset() 共享状态
c.count(); // => 0
d.count(); // => 1
javascript 权威指南的更多相关文章
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- JavaScript权威指南 - 对象
JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- 《javascript权威指南》读书笔记——第二篇
<javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
- Javascript权威指南
一.数字写法 3.14 2345.789 .333333333333333333 6.02e23 // 6.02 × 10 23 1.4738223E-32 // 1.4738223 × 10 −32 ...
- 《JavaScript权威指南 第六版 中文版》(一)
<JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...
- javascript权威指南(中文版)中的一些错误(一)
本人目前正在学习js,使用的是javascript权威指南(中文版),学习的时候发现一些细节上的错误,若是我的错误,欢迎指正 1.P11------多了“我们称为 原文为 return Math.sq ...
- javascript权威指南第6版学习笔记
javascript权威指南第6版学习笔记 javascript数组.函数是特殊对象 看一点少一点. 3.1.4 hello.js内容是 var x=.3-.2;var y=.2-.1 console ...
- JavaScript权威指南学习笔记6
这两天主要翻看了书中的第18-22章,重点看了第17章:事件化处理,其它几章节主要是翻了下书知道有相关的概念,没有真正理解其中的内容,或者没有考虑究竟如何能把里面的内容应用到实际的项目中.说的讽刺一点 ...
随机推荐
- c语言数据结构学习心得——队列
队列 只允许在一端进行插入,在另一端进行删除的线性表 队头(Front):允许删除的一端(队首) 队尾(Rear):允许插入的一端 FIFO:先进先出 不要求从数组首位开始存储队列 #define M ...
- Qt 学习之路 2(41):model/view 架构
Qt 学习之路 2(41):model/view 架构 豆子 2013年1月23日 Qt 学习之路 2 50条评论 有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应 ...
- IDEA 在 专注模式下 显示 行号 和 缩进线...
16down voteaccepted +50 Open the settings and navigate to Editor > General > Appearance and ti ...
- python学习,day1:循环判断基本语句的几个代码
# coding=utf-8 # Author: RyAn Bi count = 0 '''while True : print('count:',count) count = count + 1 i ...
- Docker Run 设置环境变量
Docker Run We can then override the environment variables set in the Docker file when running the im ...
- 51Nod-1259-整数划分 V2
51Nod-1259-整数划分 V2 将N分为若干个整数的和,有多少种不同的划分方式,例如:n = 4,{4} {1,3} {2,2} {1,1,2} {1,1,1,1},共5种.由于数据较大,输出M ...
- Hadoop基础入门
一.hadoop是什么? (1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式.Hadoop= ...
- [转] javascript中的变量和垃圾回收
[From] http://www.imooc.com/article/4585 基本类型和引用类型 js中的变量虽然不区分类型,但是实际上Ecmascript包含两种类型,基本类型和引用类型. 基本 ...
- docker 镜像编译
docker为我们提供了,包含源码的镜像, 可以要从docker hub上下载镜像来编译docker源码. 1. docker pull docker-dev:v1.2.0,其他版本就到docker ...
- Notepad++编译和运行Java
首先要让Notepad++编译和运行Java,前提是电脑里已经配置好了Java的环境(这里可以参考我博客里关于Java环境配置的那篇随笔). 在Notepad++上面的选项栏中找到 插件---> ...