一、JavaScript概述
<p><b>起源:</b>
Nombas的Cmm(后改名ScriptEasy);
<p><b>发展:</b>
Nombas的Cmm(ScriptEasy)→ NetScape的LiveScript(JavaScript)→windows的JScript→符合ECMA标准的JavaScript;
<p><b>构成:</b>
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(对象原型的引用);