1.什么是对象?
就是一个数据的合集(复杂数据)
js的数据类型 1.基本数据 2.复杂数据
对象属于复杂数据类型(引用数据类型)
说起来是复杂数据但也不复杂
var obj = {
//内部存放键值对 (还有人叫 key/value 属性名:属性值)
name:'QF', //逗号间隔
age:18 //冒号左边:键;冒号右边:值;
}
2.创建对象
var obj = {
name:'hh',
age:20
}
console.log(obj)
//内置构造函数
var hh = new Object() //创建一个空对象
console.log(hh)
3.对象key的要求
对象对于key的要求 冒号左边
1.推荐使用符合变量名规范和规则
2.可以使用数字作为key
3.可以使用特殊符号
4.对象的增删改查
对象的操作(增删改查)
1.点语法
2.中括号语法(数组语法)
var obj = {
name:'hh'
}
console.log(obj)
//点语法
//查(对象.key)
console.log(obj.name)
//修改(对象.key = 新值)
obj .name ='gh888'
console.log(obj)
//增加
obj.name = 18 //向对象 obj 中新增加一个key-->age 对应的值为18
console.log(obj)
//删除(delete obj.key)
delete obj.name
console.log(obj)
var obj = {
name:'hh'
}
//中括号语法 (数组语法)
//查 (对象['key'])
console.log(obj['name'])
//修改 (对象['key'])
obj ['name'] = 'qg999'
console.log(obj)
//增加 age 修改()
obj ['age'] = 18
console.log(obj)
//删除 delete
delete obj['name']
console.log(obj)
5.两种对象的操作方式
对象的操作方式为2种
1.点语法
2.数组语法
如何选择两种方式
1.对象的key符合命名规范的时候都可以
2.出现纯数字为key或者特殊符号@# 我们需要使用中括号
3.当出现变量的时候(想要用变量作为key)也需要使用中括号语法
var obj = {
123:'1234567',
'@':'我是特殊符号'
}
console.log(obj)
//点语法有问题
console.log(obj.123) //语法不支持
console.log(obj.'@') //语法不支持
6.遍历对象
遍历对象
就是拿到对象的所有的键值对
var obj = {
name:'hh',
a:123,
b:456,
c:789
}
//for...in 循环
for(var key in obj){
//console.log(key) //每一轮循环拿到的都是对象的key
console.log(obj[key]) //数值
console.log(key,obj[key]) //名字加数值
}
7.认识数组
认识数组
是什么
数组---->一组数字的集合(这样说太片面了)
存放一些数据的集合
var arr = [100,200,300,'a','b','c',false,true,undefined]
console.log(arr)
8.创建数组
创建数组
1.字面量
2.内置构造函数
字面量
var arr = [1,2,3,4,5]
console.log(arr)
//内置构造函数
var arr1 = new Array() //空数组
console.log(arr1)
var arr2 = new Array(5) //创建一个长度为5的数组(虽然有长度,但实际的值为5)
console.log(arr2)
var arr3 = new Array(5,10) //创建一个有内容的数组,第一个值为5,第二个值为10
console.log(arr3)
9.数组的length
数组的length
代表了数组成员的数量
var arr = [1,2,3,4,5,6,undefined]
console.log(arr)
var arr = [1,2,3,4,5,6,undefined]
console.log(arr.length) //打印成员的个数7个
10.数组的索引值
数组的索引值(下标)
数组的索引就代表了当前数据在数组的第几个位置(注意下标从0开始)
var arr = [1,2,3,4,5]
下标0 1 2 3 4
console.log(arr)
//通过下标获取数组对应的成员
console.log(arr[0]) //获取数组中的第一个成员
console.log(arr[3]) //获取数组中的第三个成员
console.log(arr[4]) //获取数组中的第四个成员
console.log(arr[arr.length - 1]) //相当于arr[4]---->5
11.遍历数组
遍历数组
拿到数组的每一个成员
var arr = [1,2,3,4,5]
//下标0 1 2 3 4
for(var i = 0;i < arr.length;i++){
console.log(i)
console.log(arr[i])
}
12.数据类型之间的区别
数据类型之间的区别
存储的区别
1. 基本数据类型: 存储在栈内存中, 变量内部就是实际的值
2. 引用数据类型: 变量存储在栈内存中, 变量内部存储的是 指向 堆内存 的 地址(对象实际的值, 存储在 堆内存中)
赋值的区别
1. 基本数据类型: 是 值的 传递
可以理解为, 将我自身的值 复制一份 给到另一个变量, 后续修改另一个变量时 与我自身没有任何关系
2. 引用数据类型: 是 地址 的传递
可以理解为, 将自身的 地址 复制一份 给到另一个变量, 后续修改互相会有影响
比较的区别
1. 基本数据类型
比较时, 是拿变量实际的值, 去做对比
2. 引用数据类型
比较时, 是拿引用地址做对比, 判断是不是执行一个地址
传参的区别
1. 基本数据类型
是 值 的传递, 将自身的值 复制一份 传递给函数的形参
2. 引用数据类型
是 地址 的传递, 将自身的地址 复制一份 传递给函数的形参
1. 基本数据类型
2. 复杂数据类型 (function; object; array)