JavaScript高级第一天
JS组成
- ECMAScript: 规定了JS的语法规范以及标准
- DOM:Document Object Model 文档对象模型,提供了一整套操作页面元素的api
- BOM:Browser Obect Model 浏览器对象模型,提供了一整套操作浏览器相关信息的api
JS中的数据类型
用typeof可以获取数据类型。
简单数据类型
简单数据类型,即直接保存在变量中的数据类型。
- string
- number
- boolean
复杂数据类型
复杂数据类型,数据保存在别处,变量中只保存数据所存在的地址
- Object
- function
- Array
- Date
- Math ---→Math可以直接用点方法进行调用,其他都需要进行new
- RegExp---→Regular Expression,正则表达式对象
- String -----→字符串对象
- Number ---→数字对象
- Boolean ---→布尔对象
空数据类型
- Null ---→Null的数据类型会返回一个Object
- undifined
Array、Date、Math、String
获取数据类型的方式
```js
typeof data;
typeof(data);
//返回值为数据的类型名称,是string类型的
//使用typeof获取复杂数据类型的数据的类型的时候,获取到的都是object
```
数据类型注意点!
复杂数据类型
复杂数据类型的变量名保存的是数据的地址,
简单数据类型直接是数据。
一个保存了地址的变量,赋值给另一个变量,对另一个变量进行操作,相应地址的数据将会被更改。
引用类型和值类型的运算
数组array,[].tostring(),结果为""(空字符串);
对象object,{}.tostring(),结果为"[object object]"(字符串);
当引用类型和值类型相比较时,
1、首先,引用类型执行valueOf()方法,获取返回值,返回值为非引用类型则进行计算;
2、若valueOf后仍为引用类型(例如Object和Array),则继续执行toString方法;
in关键字的使用
for-in
功能: 遍历对象的属性
```js
for(var key in object){
//key即对应的属性名称;
//object[key]为key对应属性名称的值;
}
```
属性名 in 对象
功能: 判断对象能否访问某个属性
```js
"属性名" in 对象;
tips:返回值为布尔值,该对象是否存在该属性,不存在false,存在true;
```
delete关键字的使用
删除未使用var声明的变量
```js
delete 变量名;
```
在访问不存在的变量的时候会报错
tips:delete array[1],这时候删除的是该数组中的索引1,索引1将会消失;
删除对象的属性
```js
delete 对象名.属性名;
```
tips:如果访问的是对象的不存在的属性,则直接返回undefined;
一些默认属性是不可删除的,返回值表示是否删除成功,但是该值不可靠!
值类型和引用类型
值类型
直接存储的就是数据本身的这种数据,就是值类型的数据
引用类型
存储的是数据的地址,数据单独存储,这种数据就是引用类型的数据
值类型的赋值特征
直接将数据复制一份交给新的变量,两个变量虽然值一样,但是存储空间完全独立,互不影响
引用类型的赋值特征
将数据的地址复制一份交给新的变量,两个变量指向同一个对象,改变其中一个,另外一个也会受到影响
对象的动态特性
对象在创建完成之后,可以随时为对象新增成员,这种特性就是对象的动态特性
点语法
```js
对象名.属性名 = 值;
```
关联数组语法
```js
对象名["属性名"] = 值;
```
逻辑中断
||中断
```js
表达式1 || 表达式2
```
1、如果表达式1为真,则返回表达式1
2、如果表达式1为假,则返回表达式2
&&中断
```js
表达式1 && 表达式2
```
1、如果表达式1为真,则返回表达式2,前真返回后
2、如果表达式1为假,则返回表达式1,前假返回假
break和continue
break
跳出整个循环,继续执行循环之后的代码
continue
跳出本次循环,继续下一次循环
DOM操作
增
// document.createElement() 创建元素
// document.createAttribute() 创建属性
// appendChild 加入子元素
// innerHTML 内部元素
删
// removeChild 删除所有子元素
// innerHTML 将innerHTML=""
改
多得很,回去翻笔记;
查
document.getElementById() 没有兼容性问题
document.getElementsByTagName() 没有兼容性问题
document.getElementsByClassName()
document.querySelector() 很好用
document.querySelectorAll() 很好用
异常处理
异常处理语句的完整模式
try{
//可能出现异常的代码
}catch(e){
//出现异常后的处理代码
//e 异常对象,包含了出现异常的所有信息
}finally{
//不管是否出现异常,都会执行的代码
//一般用来释放资源
//finally语句可以不写
}
tips:在封装框架的时候时常用try;
e表示被捕获的异常信息;
如何手动抛出异常
throw 任何东西;
throw的内容会被catch捕获,并赋值给e
throw关键可以手动的抛出异常
面向对象的基本概念
什么是面向过程
是一种思维方式,将解决问题的关注点放到解决问题的每一个详细的步骤上
什么是面向对象
是一种思维方式,将解决问题的关注点放到解决问题所需要的一系列对象身上
面向对象和面向过程的关系
面向对象是对面向过程的封装!
对象的概念
现实生活中的对象:万物皆对象,只要能具体到某一个个体上,这个个体就是一个对象
js中的对象: 无序的键值对儿的集合