JavaScript基础知识复习
JS的组成
- ECMAScript 规定JS语法规范和标准
- DOM 文档对象模型,提供了一套操作dom元素的api
- BOM 浏览器对象模型,提供了一套操作浏览器相关内容的api
JS中的数据类型
简单数据类型
- string
- number
- boolean
- undefined
- null
为什么说null是简单数据类型?
实际上,null既可以是简单数据类型,也可以是复杂数据类型
说它是简单类型,因为 null == undefined 值为true,说明null和undefined的值相等,null的数据存储方式是简单类型数据的存储方式;
说它是复杂数据类型,因为用typeof关键字来检测null的数据类型,为object1
2typeof null
// "object"
复杂数据类型
- Object
- function
- Math
- Array
- Date
- RegExp
- Number
- String
- Boolean
如何获取数据类型
1 | typeof 数据 |
值类型和引用类型
值类型
直接存储的就是数据本身的数据就是值类型的数据
引用类型
存储的是数据的地址,数据单独存储的这种数据,就是引用类型的数据
值类型和引用类型的赋值特征
- 值类型是将存储的值直接复制一份交给新的变量,两个变量值相等,但是互不影响
- 引用类型是将数据的地址复制一份交给新的变量,两个变量同时指向同一个对象,修改一个,另一个也会受到影响
1 | // 值类型的赋值 |
1 | // 引用类型的赋值 |
1 | // 引用类型的赋值 |
值类型和引用类型进行运算(+-*/ == > <)
- 会先调用引用类型数据的valueOf方法,如果返回的值可以参与运算,那就直接运算
- 如果返回值不能运算,那么再调用该引用类型数据的toString()方法,拿这个返回值参与运算
1
2
3
4
5
6
7实例:[] == ![]
// 等式从右往左运行,![]为false
// 即转化为 [] == false (引用类型和值类型运算)
// 先调用[]的valueOf方法,返回值为Object,不能参与运算
// 再调用[]的toString方法,[].toString() 返回值为 ""
// 上述等式转化为 "" == false
// 输出 true
对象的动态特性
是指在对象创建完成之后,可以随时为对象添加成员的特性
点语法
1
对象名.属性名 = 值
关联数组语法
1
2
3
4
5
6
7
8
9
10对象名["属性名"] = 值
// 玩一玩
var obj = {
name: 'joke'
};
obj[[]] = '我是一个怪物'
obj[{}] = '我还是一个怪物'
// 此时输出obj
console.log(obj)
- 关联数组语法,[]内如果写入字面量,如[],{}, 会调用字面量的toString方法,转为字符串后作为对象的键;
[].toString() ====> “”
{}.toString() ====> [object Object]
in 和 delete
in
- for-in 遍历对象的键,遍历到的键为字符串类型
- 判断对象是否可以访问某个属性
"属性名" in 对象
1
2
3
4
5
6
7
8
9// 语法:属性名 in 对象
// 返回值:布尔值
var obj = {
name: 'joke'
}
console.log("name" in obj) // true
var a; // 声明一个全局变量,相当于给window添加了一个属性
console.log("a" in window) // true
delete
- 删除未使用var声明的变量
- 删除对象的属性
- 可以删除数组元素(删除元素不影响数组的长度,以及其他元素的索引)
- 这个关键字的返回值不可靠
逻辑中断
- 表达式1 || 表达式2 表达式1为真返回表达1,为假返回表达式2
- 表达式1 && 表达式2 表达式1为假返回表达1,为真返回表达式2
break和continue
- break 跳出整个循环 继续执行循环下面的代码
- continue 跳出本次循环,继续下次循环
面向对象的基本介绍
面向对象的概念
面向对象是一种思维方式,把解决问题的关注点放在了解决问题所需要的一些列的对象上
面向过程的概念
面向过程也是一种思维方式,把解决问题的关注点放在了解决问题的每一个详细的步骤上!
什么是对象
万物皆对象
什么是js中的对象
无序的键值对儿的集合
面向对象和面向过程的关系
面向对象其实就是对面向过程的封装!