1.基本数据类型:
需要多个变量
弊端:冗余
好处: 阅读性高
2.使用复杂数据类型:
一个变量存储多个数据
弊端:阅读性不高
好处: 一个变量存储多个数据
3.使用对象:
一个变量存储多个数据 + 阅读性高 object
- let object = { name: 'min', sex: '男', age: 32 }
对象与数组的异同点:
相同点:
都是引用类型, 都可以存储多个数据
不同点:
存储方式不同
数组:
有序存储(下标从0开始递增)
对象:
无序存储(属性名和属性值一一对应, 键值对)
对象的语法:
从左往右读
1.声明对象语法:
- let 对象名 = {
- 属性名: 属性值,
- 方法名: 函数
- }
对象取值:
1.点语法:
- 对象名.属性名
2.字符串语法:
对象名['属性名'] 没声明会报错 (解析变量名)
3.如果属性名存在, 则是获取属性值
4.如果属性名不存在, 则是获取undefined
对象赋值:
- 对象名.属性名 = 值
3.如果属性名存在, 则是'修改'属性值
4.如果属性名不存在, 则是'新增'属性
2.对象的取值:
- 对象名.属性名
2.1属性名存在, 则获取属性值
2.2属性名不存在, 再获取undefined
3.对象赋值
- 对象名.属性名 = 值
3.1属性名存在, 则是修改属性值
3.2属性名不存在, 则是新增属性值
查询对象属性:
1.点语法:
- 对象名.属性名
2.字符串语法:
- 对象名['属性名']
1.声明对象
- let 对象名 = { 属性名1: 属性值2, 属性名2: 属性值2...}
- let person = {
- name: 'hu',
- age: 32,
- hobby: ['学习', '讲课', '学生'],
- sayHi: function () {
- console.log(
大家好,我是hu
) - },
- nver: { name: 'lu' }
- }
- console.log(person)
对象的增删改查:
- 1.点语法获取属性值:对象名.属性名
对象的属性是什么类型, 取出来就可以使用这个类型对应的语法
对象查询语法注意点:
1.如果有属性名则是获取属性值
2.如果没有属性名则获取undefined
3.点语法和字符串语法在使用的时候没有区别, 但是字符串语法支持变量的取值
对象遍历:
对象遍历for-in循环 :
- for(let key in 对象名){对象名[key]}
注意点:对象遍历只能使用字符串语法取值
环境对象this:
谁调用这个函数,this就指向谁
内置对象:
js作者提前写好的对象,开发者直接使用即可.无需关心内部实现
1.获取圆周率 Math.PI
2.向上取整 Math.ceil()
只对小数生效,如果是整数取整永远都是自身
3.向下取整 Math.floor()
4.四舍五入 Math.round()
5.求一组数字最大值 Math.max(数字1,数字2,数字3....)
6.求一组数字最小值 Math.min(数字1,数字2,数字3....)
7.幂运算 Math.pow(x,y) x的y次方
8.生成0-1随机小数 Math.random()/* 重点记住 */
Date日期对象:
1.创建日期对象:let date = new Date()
2.转换日期格式:console.log(date.toLocaleString())
3.获取年月日时分秒
4.1-12月对应0-11下标
5.星期天-星期六 0-6
6.创建自定义时间 let myDate = new Date('') yyyy-mm-dd HH:mm:ss
7.获取时间戳 1970年到现在的总毫秒数(用于兼容时间)
数组对象:
1.join():把数组每一个元素拼接成字符串
()里面的参数就是分隔符
2.reverse():翻转数组
3.sort()数组排序
固定语法:
如果一个函数的参数是函数类型,那么这个参数函数称之为回调
arr1.sort(function(a,b)){
return a-b //从小到大
return b-a //从大到小
}
4.数组去重:声明一个空数组存储去重后的数组,遍历数组,检查arr的元素在不在newArr中
String对象:
1.长度(标点符号也算长度)
2.字符串和数组有点类似,也可以通过下标来获取单个字符
3.indexOf:检查某个字符在不在字符串中
在:返回首字符下标 不在:-1
4.replace:替换字符 str.replace('旧字符','新字符')
如果你想要删除某个字符,只需要替换成空字符串即可
5.split():切割字符串
str.split('分隔符'):以指定分隔符将字符串隔成几个部分,放入数组中
6.substr():截取字符
str.substr(起始位置,截取数量)
7.转换大小写:中文没有大小写
console.log(toLocaleUpperCase)大写
console.log(toLocaleLowerCase)小写
cconst 和 let (简单数据类型和复杂数据类型)
值类型和引用类型的区别:
值类型:栈中存储数据,复制拷贝的是栈数据,修改拷贝后的数据对原数据'没有影响'
引用类型:栈中存储地址,赋值拷贝的是栈地址.堆中存储数据,修改拷贝的后的数据对原数据'有影响'