【JavaScript核心技术卷】基于对象编程OBP

文章目录

    • 一、ECMAScript的四个阶段
      • (1)第一阶段--编辑
      • (2)整体语法检查
      • (3)单步解释执行过程
      • (4)单步解释执行结果
    • 二、与基于对象程序设计(OBP) 有关的五个方面
    • 三、在HTML中使用JavaScript

JavaScript是基于对象编程OBP(Object based programming), JavaScript一切皆为对象

一、ECMAScript的四个阶段

【JavaScript核心技术卷】基于对象编程OBP_第1张图片

(1)第一阶段–编辑

这部分还是比较值得注意一下。程序员要根据ECMAScript语言规范编写出源程序,源程序要面向语言规范(语法)、编程思想、OOA/OOD、编译器/解释器和类库编程。

合格的源程序(整体检查通过):

  1. 符合版本语法
  2. 调用版本的API
  3. 符合版本的内置编译规则

优秀的源程序(高质量运行):

  1. 编程思想
  2. 核心技术(技术知识和技术能力,将技术知识转化为技术能力)
  3. OOA/OOD
  4. 类库/框架:可以提高设计效率,但是不会提高运行效率

(2)整体语法检查

源程序-----整体语法检查-----合格

这个主要涉及到编译原理相关的知识。

(3)单步解释执行过程

源程序-----> 解释器单步解释执行-----> 本地机器代码----->浏览器(API)----->操作系统(专用API)----->本地CPU(指令语言)
------>执行。

解释器解释执行性能较低。

(4)单步解释执行结果

理解程序运行的结果不应该从语法角度出发,而是应该从内存模型(执行模型、对象模型)角度出发,经过相关的数据处理,“显示”我们相应的结果。

程序的执行无非就是:一是生成数据结构,二是访问和操作数据结构中的数据。所以在程序设计时,一定要选择数据结构。

数据结构:规定了数据的格式和这些格式的意义。

二、与基于对象程序设计(OBP) 有关的五个方面

语言规范、OOA/OOD、编程思想、API类库、编译执行以及内存逻辑模型

【JavaScript核心技术卷】基于对象编程OBP_第2张图片
1.知识

源程序需要符合语言规范,语法是知识的一部分。

2.能力

  1. OOA分析能力
  2. OOD设计能力
  3. 方案的选择能力
  4. 内容

3.技术(解释执行以及内存逻辑模型)

技术(包括技术知识和技术能力),要将技术知识转化为技术能力。

  1. OOP时, 选择数据结构
    1)效率
    ①设计效率
    采用IDE集成开发环境提高录入效率,采用类库/框架提高设计效率,采用程序生成器提高程序生成效率。
    ②运行效率
    1次 ×(数据结构的)生成效率 + n次 ×(操作数据的)运行效率
    2)内存的大小
    3)垃圾回收

  2. 建立内存中的数据结构并初始化
    1) 栈中的数据结构(在栈中,系统生成, 由系统自动入栈/出栈)
    2) 堆中的数据结构(类的数据结构和实例的数据结构)

  3. 回收内存中的数据结构
    1)栈中的数据,系统自动回收
    2)托管堆中的托管数据,GC自动回收
    3)非管堆中的非托管数据,编程回收。要编程回收的非托管数据主要指非托管的有限资源和非托管的大对象。否则,将引起资源泄露或内存泄露。

  4. 访问数据结构中的数据

  5. 操作数据结构中的数据

  6. 内存中数据的安全
    1)访问权限:由访问修饰符来完成。 Javascript不支持访问权限修饰符。
    2)防窃取:通过网络安全措施
    3)防偷窥:通过加密防止非法的偷窥。通过自定义数据结构(具有逻辑含义,防止理解)防止非法的偷窥。
    4)防篡改: 通过数字签名防止非法的篡改。
    5)及时擦除: 将重要的垃圾数据从内存中及时擦除,而不要等待GC回收。
    6)安全验证

    1. 数据类型的安全:隐式类型转换、显示类型转换
    2. 计算表达式的安全(特别要注意计算表达式中的隐式类型转换)
    3. 数组越界
    4. 函数的调用:
      • 实参与形参在类型、数量、顺序上是否匹配
      • 在表达式中的函数是否有返回值
      • 函数的返回值是否得到正确的使用
      • 函数内部的异常处理
  7. 内存中数据的正确

    1. (逻辑)业务一致性:通过 try … catch … 解决
    2. (完整性)约束一致性:多数通过 get访问器和set访问器解决
      • 实例对象的字段、以及字段之间的完整性
      • 同类实例对象之间的完整性
      • 不同类实例对象之间的完整性
    3. (多线程)并发一致性:并发冲突通过Lock解决
  8. 技术的选择能力

  9. 程序的错误
    运行时错误、逻辑错误往往是由于程序的bug引起的。

    1. 语法错误
    2. 运行时错误
    3. 逻辑错误
  10. 异常处理:商业程序中必有异常处理。

  11. 可维护性

    1. 程序的可维护性:被调用函数的内部维护,尽量不要修改调用函数。
    2. 模块的的可维护性:被调用模块的内部维护,尽量不要修改调用模块。
    3. 软件系统的可维护性:被调用软件层的内部维护,尽量不要修改调用软件层。
    4. 数据结构的可维护性:数据结构的维护,尽量不要修改加工数据结构中数据的函数
  12. 日志:操作日志(安全)、错误日志(维护)

4.编程思想

  • what、why、how
  • 如何编写出高质量的、可维护、可扩展的程序。
  • 类的设计原则
  • 程序的设计模式

5.类库

  • 经验丰富的程序员,将充分掌握和使用已存在的类库(包括第三方类库)。
  • 可以提高程序设计效率,但是并不能提高运行的效率。

三、在HTML中使用JavaScript

HTML元素标签,告知HTML解析器,生成该标签类的一个实例。

转义(字符)序列是给编译器看的,在中间代码中存放Unicode编码。

HTML 转义字符

诸如 “<” 之类的符号在HTML中拥有特殊的含义,所以在文本中使用它们。

为了在 HTML 中显示小于号 (<),我们需要使用字符实体

字符实体

字符实体有三部分:一个和号 (&),一个实体名称或者 # 和一个实体编号,以及一个分号 ;。

要在 HTML 文档中显示小于号,我们需要这样写:< 或者 <

使用实体名称而不是实体编号的好处在于,名称相对来说更容易记忆。而这么做的坏处是,并不是所有的浏览器都支持最新的实体名称,然而几乎所有的浏览器对实体编号的支持都很好。

注意:实体对大小写敏感。

空格

空格是 HTML 中最普通的字符实体。通常情况下,HTML 会裁掉文档中的空格。假如你在文档中连续输入 10 个空格,那么 HTML 会去掉其中的9个。如果使用  ,就可以在文档中增加空格。

最常用的字符实体
【JavaScript核心技术卷】基于对象编程OBP_第3张图片
其他一些常用的字符实体
【JavaScript核心技术卷】基于对象编程OBP_第4张图片

你可能感兴趣的:(JavaScript核心技术)