《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运行时数据区域 运行时数据区分为方法区,堆,虚拟机栈,本地方法栈,程序计数器 方法区和堆是线程共享的区域 虚拟机栈,本地方法栈,程序计数器是数据隔离的数据 ...
随机推荐
- HBuilder+移动APP开发实例
mui: 官网:http://dcloudio.github.io/mui/ 说明:一般要把官网内容通读一遍,这是开发的基础 开始 1.新建项目 在首页点击新建移动App,如下: 或者在项目管理器内右 ...
- Signalr简单入门,使用注意点
注意点:1,创建proxy代理时候,继承了hub的类,方法名在js中,同名,但是默认首字母是小写,2,js中代理毁掉方法的名称和继承了hub的类的方法中的Clients.All.的对象名称要一致(名称 ...
- 怎么捕获和记录SQL Server中发生的死锁
我们知道,可以使用SQL Server自带的Profiler工具来跟踪死锁信息.但这种方式有一个很大的敝端,就是消耗很大.据国外某大神测试,profiler甚至可以占到服 务器总带宽的35%,所以,在 ...
- jQuery 获取并设置 CSS 类
通过 jQuery,可以很容易地对 CSS 元素进行操作. 切换 CSS 类 jQuery 操作 CSS jQuery 拥有若干进行 CSS 操作的方法.我们将学习下面这些: addClass() - ...
- C# 多线程详解
1.使用多线程的几种方式 (1)不需要传递参数,也不需要返回参数 ThreadStart是一个委托,这个委托的定义为void ThreadStart(),没有参数与返回值. 复制代码 代码如下: cl ...
- 第六篇、WebSphere8.5 (商业级服务器)大规模集群
一.前言 上一篇中讲述了WebSphere的安装与应用,该版本的WAS一般都用于开发测试(有些小应用生产环境下也会用到),在生产中绝大部份使用的WebSphere Application Server ...
- 关于Linux 交互(用户操作接口)
Linux 系统提供两种基本接口给用户操作:命令行,图形界面. 不同接口也有相应的访问终端. 一.命令行 Command Line Linux系统命令行,一般指 Shell. Shell 接受经键盘输 ...
- linux 监控服务器脚本
#!/bin/bash ctime=`date +%x%T`monitor_dir=/home/jk/if [ ! -d $monitor_dir ]; then mkdir $monitor_ ...
- windowsphone 中CollectionViewSource和ObservableCollection的使用
功能描述:一级菜单省份 联动显示省份下的城市 直接上代码 public class City { public string Num { get; set; } public string Name ...
- CSS Hack技术详解,支持IE 6-11、Chrome、FireFox、Safari、Opera 6-11、Chrome、FireFox、Safari、Opera6-11、Chrome、FireFox、Safari、Opera6-11、Chrome、FireFox、Safari、Opera
转自: http://www.365mini.com/page/css-hack-ie-chrome-firefox-safari-opera.htm 当前网络时代,各种各样的网页向我们展示着丰富多彩 ...