对象的操作
增 create 在对象内 增加一个键值对
删 delete 在对象内 删除一个键值对改 update 修改 对象内键值对的数据
查 read select 访问 对象中的 键值对
点语法 .
增 对象名.键名 = 值; // 对象中没有这个键, 给这个新的键赋值 = 增加一个键值对
删 delete 对象名.键名;
改 对象名.键名 = 新值; // 这个键一定是已经存在的键 然后重新赋值
查 对象名.键名
如果有这个键 那么就输出这个键对应的 值
如果没有这个键 那么就是undefined
数组语法 []
增 对象名['键名'] = 值; // 这个键不存在 给一个新的键赋值
删 delete 对象名['键名']
改 对象名['键名'] = 值;
查 对象名['键名']
if 中 写条件 比如判断 键是否存在 用数组语法
区别:
1. 当键的名字 满足标识符的命名规则和规范 它俩没有区别
2. 当键的名字是纯数字 或者里边有特殊字符,只是使用数组的语法方式
进行增删改查
3. 里边涉及到变量 把键的名字赋值给 变量 ,然后对象通过变量 拿到 指定的值
只能使用数组的语法方式 中括号内也不要加单引号
对象的遍历
查看是否有指定的键 in
把键或者值或者键值对挨个取出来 for in
in 关键字
'字符串' in 对象名 => 一定是一个布尔类型
true 表示 对象 有这个键
false 表示 对象没有这个键
in 只能判断 键是否存在于 对象中 不能判断 某个值是否存在于 对象中
for .. in 循环
for(var 变量 in 对象名){
// 多少个键值对 循环多少次
// 每次循环 变量中存的是对象的 键
// 每次循环 对象名[变量名] 键对应的值
}
基本数据类型和 引用数据类型
赋值的区别:
1 . 基本数据类型 赋值 会在栈内存开辟一个新的空间 两个空间独立
两个变量就没有任何关系了
2. 引用数据类型赋值 因为 引用数据的名字在栈内存 赋值也会在栈内存开辟一个新的空间 两个栈内存的空间同时指向一个堆内存空间 所以 一个变量进行修改 另外一个 也跟着改变
不同数据类型的存储 :
基本数据类型存在栈内存中
引用数据类型 的数据本体在堆内存 名字在栈内存 栈内存的空间存着堆内存空间的地址
https://pythontutor.com/javascript.html 可视化 赋值的过程
数组
一个变量只能存一个值
我们想 把 1 'hello' true 等放到一个变量 不能放
但是我们可以把 1 'hello' true 打包到一个地方 然后再放变量
打包的地方 就是数组
数组 也是js 一个复杂的数据类型 Array
也是 个盒子 盒子中放着数据
这是个有序的数据集合
有序: 每次打开顺序一样 保持不变
无序: 每次打开顺序可能不跟写的一样
不同的数据类型可以放到数组中
建议 数组中放同样的数据类型
创建数组
字面量的创建方式
var 数组名 = []; // 创建一个空数组 经常用
创建带有数据的数组 var 数组名 = [数据1,数据2,数据3,...数据n];
内置构造函数
var 数组名 = new Array(); 创建空数组
var 数组名 = new Array(数据1,数据2,数据3,...数据n); // 创建有数据的数组
var 数组名 = new Array(数字); // 仅有一个数字 创建一个指定长度的数组
长度: 数组内有多少个数据
数组中数据的排列
数组是有序的集合
按照顺序排列的
计算机 顺序 从 0开始
生活中的顺序 从 1开始
每个数据都有自己的序号
这个序号叫做 索引 或者叫做下标
索引从 0开始 下标0是第一个
数组的最后一个 必然是长度-1
数组的属性 会用
length属性
<div id="test"> id 是div的属性
属性 后边不加()
每个数组 默认就带着length属性 可以读写
length属性表示 数组的长度 也就是数组中有多少个数据
读 只看
语法:数组.length
结果: 拿到数组的长度
写 增删改
数组.length = 数字
1. 如果你设置的数字 小于length 多出来的数据会从末尾开始删除
2. 如果你设置的数字 等于length 相当于没设置
3. 如果你设置的数字 大于length 不够的部分用empty 补齐
索引
数据在数组中的一个序号
从0开始 逐步+1
读
数组[索引]
得到的结果:
如果存在这个索引 得到索引位置上的数据
如果不在这个索引 会得到undefined
写
数组[索引] = 值
得到的结果的几种情况
1. 如果有这个索引 那么就把该索引所在的位置数据替换
2. 如果我们设置的索引的大小跟数组的长度一样,就是向数组追加一个元素
var arr= [1,2,3,4] arr[4] = 5
3. 如果这个索引大于length 中间空余出来的位置 用empty 补齐
var arr= [1,2,3,4]
arr[10] = 5 => 1 2 3 4 empty empty ... 5
数组的遍历 非常重要
for in 遍历
对象的遍历 for(var k in 对象){}
可以用来遍历数组
for(var k in 数组名){}
k 存的是数组的索引
根据索引 进行遍历
for(var i=0;i<数组.length;i++){
console.log(数组[i]);
}