一.无处不在的js
1.0前言
本章包含以下内容
-
Javascript核心语言特性
-
Javascript引擎核心要素
-
Javascript开发中的3个最佳实践
MVC(Model- View - Controller ----模型 - 视图 - 控制器)
MVVM模式:
模型—视图—视图模型—绑定器
1.1理解js
- 函数是一等公民(一级对象)
- 函数闭包
- 作用域
- 基于原型的面向对象————不同于其他主流的面向对象语言(例如 c# , java , Ruby) 使用基于类的面向对象, Javascript 使用基于原型的面向对象。正是如此,我们需要深入理解原型,我们要知道基于原型的对象如何工作,以及怎样再js中实现面向对象。
对象,原型,函数和闭包的紧密结合组成了JavaScript。
除了这些基本概念,Javascript还有一些其他功能:
- 生成器,一种可以基于一次请求生成多次值的函数,在不同请求之间也能挂起执行
- Promise
- 代表,让我们控制对特定对象的访问
- 高级数组方法
- Map,用于创建字典集合;Set,处理仅包含不重复项目的集合
- 正则表达式
- 模块
1.1.1js是如何发展的
1.1.2转换编译器
当我们想利用JS的最新特性时,也往往会被残酷的现实绑架:用户依然在使用老旧的浏览器。这该怎么办呢?
解决这个问题的方式之一时是使用转换编译器transpilers(即“转换器” + “编译器”, “transformation + compiling”),这类工具能够把最前沿的JS代码转换为等价的(如果不能实现,则使用相似的)能在当前浏览器中运行的代码。推荐转换编译器:Traceur,Babel。
1.2理解浏览器
1.文档对象模型(DOM)
2.事件
3.浏览器API
1.3使用当前的最佳实践
1.3.1调试
调试JS代码的工具
1.Firebug 2.Chrome DevTools 3.Firefox开发者工具 4.F12开发者工具 5.WebKit检视器
1.3.2测试
断言函数:
assert(condition , message);
第一个参数时一个应为真值的条件,第二个参数时当断言为假时所展示的一句话。例如:
assert( a === 1 , “Disaster! a is not 1!”);
如果变量的值不等于1,那么断言失败,后面的消息就会被展示
注意:断言函数并不是JS的标准特性
1.3.3性能分析
console.time("My operation");//开始计时器
for (var n = 0 ; n < maxCount; n++)
{
//perform the operation to be measured
}
console.timeEnd("My operation"); //停止计时器
在这段代码中,我们把要被测量的代码放在两个计时器调用之间,分别是内置console对象商店time和timeEnd方法。
在操作开始执行之前,调用console.time启动一个明明计时器(本例中名为My operation)。然后再特定的循环次数下运行diamagnetic(本例中运行maxCount次)。由于一次操作执行太快很难测量,所以我们要多次运行代码,取得一个能够测量的值。
操作结束后则用相同的计时器名字调用console.timeEnd。随后浏览器就会输入从开始到当前的时间差。
1.4提高跨平台开发能力
1.5小结
1.客户端Web应用作为如今最流行的应用,其概念,工具和技术从仅开发客户端Web应用已经深入到洽谈应用领域。理解客户端Web应用的基础能帮助你开发一系列不同领域的应用。
2.为了提高开发技能,你需要深入理解JS的核心机制和浏览器所提供的架构。
3.除了JS以外,我们还讲探索浏览器内部,例如DOM(网页UI的一种结构化不是方式)和事件,这是因为客户端Web应用是事件驱动的应用。