《JavaScript高级程序设计》笔记

一、JavaScript概述


起源:
Nombas的Cmm(后改名ScriptEasy);

发展:
Nombas的Cmm(ScriptEasy)→ NetScape的LiveScript(JavaScript)→windows的JScript→符合ECMA标准的JavaScript;

构成:
ECMAScript(JavaScript标准)、DOM(Document Object Model 文档对象模型) 、BOM(Browser Object Model 浏览器对象模型);

ECMAScript:
  • 作用:
    定义脚本语言的所有属性、对象和方法;
  • 描述的内容:*
    1.语法;
    2.类型;
    3.语句;
    4.关键字;
    5.保留字;
    6.运算符;
    7.对象;*
  • 浏览器支持:如今所有的主流浏览器都遵守ECMA-262第三版;
DOM
  • 是什么:HTML和XML的应用程序接口(API)。
  • 实现:通过创建树来表示文档(文档由不同的节点构成);
  • 必要性:* 跨平台(兼容)*;
  • DOM Level:*
    Level 0 : 历史参考点,不存在标准;
    Level 1:目标是规划文档结构,包括 DOM Core 和 DOM HTML 两个模块;
    Level 2:对原始扩展添加了对鼠标和用户界面事件、范围、遍历的支持,通过对象接口添加了对 CSS 的支持,对原始DOM core添加XML支持,引入几种DOM新模块(DOM视图、DOM事件、DOM样式、DOM遍历和范围),用于处理新的接口类型;
    Level 3:引入了以统一方式载入和保存文档的方法(包含在新模块DOM Load和DOM Save中)以及验证文档(DOM Validation)的方法,扩展了DOM,DOM Core支持所有的XML1.0特性;
  • 浏览器支持:并非所有的浏览器都支持DOM;

ps:DOM不是JavaScript专有的

BOM:
  • 作用:处理浏览器窗口和框架;
  • 包含内容:* 弹出新的浏览器 矿口; 移动、关闭浏览器窗口及调整窗口大小;提供Web浏览器详细信息的导航对象;提供装载到浏览器中页面的详细信息的定位对象;提供用户屏幕分辨率详细信息的屏幕对象;对cookie的支持等;*

ps:BOM没有特定的标准,每种浏览器都有自己的 BOM 实现;

二、ECMAScript概述


语法:
  • 区分大小写;
  • 变量是弱类型;
  • 每行结尾的分号可有可无;
  • 注释 与JAVA、C和PHP语言的注释相同;
  • 括号表明代码块;
变量
  • var + 变量名可以定义一个或多个变量;
  • 变量不一定要 初始化;
  • 变量可以存放不同类型的值;
  • 变量名第一个字符必须是字母、下划线或美元符号;
  • 使用变量之前不用声明(会被自动声明为全局变量并初始化为指定的值);

ps:变量名命名规则(Camel标记法:首字母是小写的,接下来的单词都以大写字母开头; Pascal标记法:首字母是大写的,接下来的单词都以大写字母开头; 匈牙利类型标记法:在以Pascal标记法命名的变量前附加一个小写字母<或小写字母序列>,说明该变量的类型;)

关键字
  • 关键字列表
    break、else、new、var、case、finally、return、void、catch、for、switch、while、continue、function、this、with、default、if、throw、delete、in、try、do、instanceof、typeof
  • 误用关键字错误提示:“Identifier expected”(应该有标识符)
保留字(为将来的关键字而保留的单词)
  • 保留字列表
    abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、super、char、final、native、synchronized、class、float、package、throws、const、goto、private、transient、debugger、implement、protected、volatile、double、import、public
  • 误用保留字没有错误提示,除非它们转化为关键字;
原始值和引用值
  • 原始值:存储在栈中的简单数据段,它们的值直接存储在变量访问的位置(存储空间大小固定);
  • 引用值:存储在堆中的对象,存储在变量处的值是一个指针,指向存储对象的内存处;

ps:引用值的地址存储在栈中;

原始类型
  • 五种原始类型:Undefined、Null、Boolean、Number和String;
  • 依据每种原始类型值的范围不同,可以用typeof判断原始类型;
typeof 运算符
  • typeof运算符有一个参数,即要检查的变量或值;
  • null被认为是对象的占位符,调用typeof运算符时,会返回object;
Undefined类型
  • Undefined类型只有一个值,即undefined;
  • 当声明未初始化时,该变量的默认值是undefined;
  • 当函数无明确返回值时,返回的值是undefined;
  • 未声明的变量返回值也是undefined,但是运算时会出错(运算符只能用于已经声明的变量);
Null类型
  • Null只有一个值null;
  • null的值与undefined的值相等;
  • 当函数或方法返回不存在的对象时返回null(null表示不存在的对象);
Boolean类型
  • Boolean有两个值,true和false;
  • 0可以在必要时转化为false;
Number类型
  • 直接输入的任何数字都被看做是Number类型的字面量;
  • 输入八进制或六进制类型时,首位数字必须是0,后跟八或十六进制数;
  • 尽管所有整数都可表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果;
  • 定义浮点值,必须包括小数点和小数点后的一位数(浮点数在计算前存储的是字符串);
  • 可用科学计数法表示非常大或非常小的浮点值;
  • Number类型还包括几个特殊值:Number.MAX_VALUE和Number.MIN_VALUE,定义了Number值集合的外边界(可以用isFinit()方法检测数字是否无穷)、NaN(非数),NaN的值不等于它本身,可以用isNaN()函数检测是否为非数;
String类型
  • String类型没有固定大小,字符串中的每个字符都有特定的位置(0,string.length),字符串的最后一位为字符串长度减一;
  • String类型可以用单引号或双引号声明;
  • String类型还包括几种字符字面量:\n、\t、\b、\r、\f、\、'、''、\0nnn、\xnnn、\unnnn;
转换成字符串的方法
  • Boolean、Number和String这三个原始值都是伪对象,都有方法和属性,可以用toString()方法把他们的值转换为字符串;
  • Number类型调用toString方法会有两种模式,默认模式:直接调用toString(),无论输入值是任何类型的数字,都会返回十进制数的字符串形式;基模式:调用toString(),同时括号里填不同的基,会返回不同基数字符串的形式;
转换成数字的方法
  • 把非数字的原始值转换为整数可以用parseInt()方法,parseInt()方法有基模式,基写在第二个参数;
  • parseFloat()方法可以将非数字转换为浮点数,该方法没有基模式;

以上两种方法只转换第一个无效字符之前的字符串(部分值);

强制类型转换的方法
  • Boolean(value)——把给定的值转换成Boolean类型;
  • Number(value)——把给定的值转换成数字(全部值);
  • String(value)——把给定的值转换为字符串;
  • 强制转换将创建新值;
引用类型(类)
  • 通过new运算符加上要实例化的类的名字创建对象;
  • 若要实例化的类没有参数,则类的括号可以省略;
object类
  • 所有的类都是由object类继承而来,object类中的所有属性和方法都会出现在其他类中;
  • object类具备的属性:Constructor(创建指针)、Prototype(对象原型的引用);

你可能感兴趣的:(《JavaScript高级程序设计》笔记)