《JavaScript语言精髓与编程实践》读书笔记二
第3章非函数式语言特性
这一章首先介绍了语言的分类,命令式(结构化编程,面向对象编程),说明式(函数式等)。而这一章,主要介绍JS的非函数式特点。
在开始之前,首先介绍了由“结构化编程”向“面向对象编程”的演化趋势。“结构化编程”根本上是面向机器世界的“存储描述”因此抽象层次比较低,所以带了以下几点问题:
1. 结构体与实体直接相关,并且将这种相关性直接呈现在使用者的面前,因此开发人员必须面临数据的具体含义与关系。
2. 结构体的抽象更面向于数据存储形式的表达和算法实现方式,脱离了使用环境,算法的结构也缺乏通用性。
3. 僵化的类型与讲话的逻辑并存,影响了业务逻辑的表达。
以上三点,在面向对象编程之中得到了良好的解决。
1. 面向对象提出通过更加细化的可见设定(public,protected,private等),更好地实现了数据的封装以及数据域的管理。
2. 面向对象中的“继承”解决了结构体的通用性问题。可以在不同的场合从共有的特点中继承产生新的类别,从而更好地适应该场合。
3. “多态”被用来解决了“强类型”与业务逻辑表达之间的冲突。
此外,接口的提出(质保陆数据提的逻辑行为能力,而不暴露这种能力的实现方法和给予的数据特性),是一种更高层次的抽象。
之后就是重点讲js的“结构化编程”和“面向对象编程”的具体内容。
首先说结构化的内容:
1. break/break<label>的区别:break 表示跳出当前循环,break<label>表示跳出当前label之间的语句。
变量的作用域:
1. JS中,表达式级别的变量都是匿名的。
2. 由于JS中不存在语句级别的变量作用域,因此for ( var i in obj)中的i会逸出到上一级,很有可能造成污染!
3. JS中变脸的作用域只有两个局部变量(函数内部),全局变量。
4. 两个不利于开发的事情:
1) 在全局范围内任意声明变量,尤其是在for语句中声明变量
2) 在函数内部不适用var声明变量,而是直接为变量赋值将会导致变量逸出到全局
5. JS中,语法解释与执行分为两个阶段,变脸的显示声明(var)是在语法解释阶段处理的(在解释阶段该值为undefine)。
6. 变量的被创建的两个方式:
1) 在语法分析时,发现了显示声明的变量var
2) 在代码执行时,发现试图为一个未被创建的变量赋值
7. 变量的两种释放方式:
1) 某个函数退出时,清除函数内的未被引用的变量
2) 全局代码块终结时,将清除全局的变量和数据的引用
8. 一个具名函数完全等价于将一个匿名函数赋值给一个已经声明变量的表示符的。
var sb = function() {
alert("haha");
}
function sb2() {
alert("haha");
}
这两个函数除了在语法上面有些不同之外,调用方式等都是一样的。
面向对象,内容比较多,下一篇再细说吧!
《JavaScript语言精髓与编程实践》读书笔记二的更多相关文章
- 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...
- 【Todo】深入理解Java虚拟机 读书笔记
有一个在线系列地址 <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> http://book.2cto.com/201306/25426.html 已经下载了这本书(60多M ...
- 深入理解Java虚拟机读书笔记5----虚拟机字节码执行引擎
五 虚拟机字节码执行引擎 1 运行时栈帧结构 ---栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈的栈元素. ---栈帧中存储了方法的局部变 ...
- 深入理解Java虚拟机--阅读笔记二
垃圾收集器与内存分配策略 一.判断对象是否已死 1.垃圾收集器在对堆进行回收前,要先判断对象是否已死.而判断的算法有引用计数算法和可达性分析算法: 2.引用计数算法是给对象添加引用计数器,有地方引用就 ...
- 深入理解Java虚拟机读书笔记8----Java内存模型与线程
八 Java内存模型与线程 1 Java内存模型 ---主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节. ---此处的变量和J ...
- 深入理解Java虚拟机读书笔记7----晚期(运行期)优化
七 晚期(运行期)优化 1 即时编译器(JIT编译器) ---当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,包括被多次调用的方法和被多次执行的循环体. ...
- 深入理解Java虚拟机读书笔记4----虚拟机类加载机制
四 虚拟机类加载机制 1 类加载机制 ---概念:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型. -- ...
- 深入理解Java虚拟机读书笔记3----类文件结构
三 类文件结构 1 Java虚拟机的两种中立特性 · 平台无关性 · 语言无关性 实现平台无关性和语言无关性的基础是虚拟机和字节码存储格式(Class文件). 2 Clas ...
- 深入理解Java虚拟机读书笔记1----Java内存区域与HotSpot虚拟机对象
一 Java内存区域与HotSpot虚拟机对象 1 Java技术体系.JDK.JRE? Java技术体系包括: · Java程序设计语言: · 各种硬件平台上的 ...
- 深入理解java虚拟机读书笔记--java内存区域和管理
第二章:Java内存区域和内存溢出异常 2.2运行时数据区域 运行时数据区分为方法区,堆,虚拟机栈,本地方法栈,程序计数器 方法区和堆是线程共享的区域 虚拟机栈,本地方法栈,程序计数器是数据隔离的数据 ...
随机推荐
- HTML5+移动APP(2)
原理: html 页面负责内容: ui 负责页面样式: js 负责调用原生app方法. html5: html5这部分负责页面,也就是app中你看到的东西,大概的架构和内容 ui: mui 介绍:和H ...
- powerdesigner设置唯一键,但不是主键的方式
[转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的 ...
- js做全选,用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false
用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false,当所有checkbox都被选中时,全选按钮也被选中. 详解: 有两种 ...
- Linux抓包工具tcpdump详解
tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...
- cmd 命令行下复制、粘贴的快捷键
1.单击左下角“开始”菜单,选择“运行”,输入“cmd”. 2.在弹出的cmd窗口的标题栏上点击“右键”,选择“属性”. 3.在弹出的对话框中选择“选项”这个选项卡,在“编辑选项”区域中勾选“快速编辑 ...
- 初探grunt.js
package.js { "name": "ttd_v3", "version": "0.1.0", "aut ...
- jQuery之文本框得失焦点
版本一 css代码部分: .focus { border: 1px solid #f00; background: #fcc; } 当焦点获得时,添加focus样式,添加边框,并改背景色为#fcc h ...
- phpexcel 一些基本的设置 (表格的基本属性)
网址是:http://www.thinkphp.cn/code/1893.html
- [Winfrom] 捕获窗体最大化、最小化和关闭按钮的事件
const int WM_SYSCOMMAND = 0x112;const int SC_CLOSE = 0xF060;const int SC_MINIMIZE = 0xF020;const int ...
- [Android1.5]TextView跑马灯效果
from: http://www.cnblogs.com/over140/archive/2010/08/20/1804770.html 前言 这个效果在两周前搜索过,网上倒是有转载,可恨的是转载之后 ...