对象再次学习
1.方法
本质上为函数
var 对象名 = {
属性名:属性值
方法名:functionn(){
//添加方法
//关键字this 指向调用方法的对象
this.属性名//可以得到属性名的属性值
}
}
//调用方法
对象名.方法名
2.数据存储
原始类型:存储在栈内存中,每次开辟的空间大小是固定的
引用类型:存储在堆内存中,所占的空间大小根据内容动态变化的;如果创建一个对象会存储在堆内存中,同时还会自动生成一个地址(指针);引用类型包括:对象,函数、数组
null:空地址,不指向任何引用类型数据
引用类型数据的销毁:不被任何的地址所引用,即可自动销毁,通常只需要赋值为null;
数组
数组是一组数据的集合,每一条数据称作元素
1.创建数组
(1).数组字面量[]
var 数组名=[元素1,元素2,元素3......]
// 示例: 创建一个数组,包含一组商品的名称
var shangpin(数组名) = ['元素1','元素2','元素3','元素4'];//数组中的元素可以是任何类型
(2).内置构造函数
//第一种写法
var 数据名 = new Array(元素1,元素2,元素3......)
//第二种写法
var 数据名 = new Array(初始化长度,也可以添加多个元素)
//示例: 创建数组,包含多个数据
var shuzu(数据名) = new Array('123'(元素1),'234'(元素2),'345'(元素3)......)
//示例: 创建数组,初始化长度为4,添加4个数据
var shuzu(数据名) = new Array(4(初始化长度,也可以添加多个元素))
shuzu(数据名)[0](长度) = '123'
shuzu(数据名)[1](长度) = '234'
shuzu(数据名)[2](长度) = '345'
shuzu(数据名)[3](长度) = '456'
2.访问数组元素
下标(索引):js自动为每个元素添加的编号,是一个大于等于0的整数
数组名[数组下标]
//添加
数组名[未被使用过的下标] = 要添加的值
//修改
数组名[被使用过的下标] = 要修改的值
//示例:创建、修改、添加(小小的发泄一下)
var shuzu = ['国行', '港服'];
shuzu[1] = 'swwiitch';
shuzu[2] = '真贵'
shuzu[3] = '吃灰'
3.数组的长度
数组.length:获取数组元素个数
在数组的末尾添加元素 数组[数组.length] = 值
数组名[数组名.length(长度关键词)] = '游戏也贵';
//示例:创建空数组,使用数组的长度属性往数组中添加多个吐槽语句
shuzu(数组名)[shuzu(数组名).length(长度关键词)] = '宝可梦朱紫';
shuzu(数组名)[shuzu(数组名).length(长度关键词)] = '怪物猎人:崛起';
shuzu(数组名)[shuzu(数组名).length(长度关键词)] = '怪物猎人:崛起还行';
shuzu(数组名)[shuzu(数组名).length(长度关键词)] = '宝可梦朱紫有点贵';
shuzu(数组名)[shuzu(数组名).length(长度关键词)] = '暂时买不起';
4.数组分类
索引数组:是一个大于等于0的整数作为下标,可以通过length获取长度
关联数组:以字符串作为下标,只有单独添加元素的时候才可以使用,不能使用length获取长度
5.数组和对象有什么区别?
两者都可以存储一组数据,对象是通过属性,数组是通过元素
对象中数据是无序的,不分先后;
数组中的数据是有序的,可以进行排序;
// 看他们之间的区别和互相调用
var xwsz = [{
title: '这个是要罚钱了吗?',
shiujan: '2022-02-02'
},
{
title: '这个是要罚钱了吗?',
shiujan: '2022-02-02'
},
{
title: '这个是要罚钱了吗?',
shiujan: '2022-02-02'
}
];
console.log(xwsz);
console.log(xwsz[1].title);
6.遍历数组元素
通过循环的方式依次访问数组中的每个元素
//for-in
for (var k in 数组名) {
//k代表每次获取的下标
//数组名[k] 下表对应的元素
}
//for循环(推荐方式)
for (var i = 0; i < arr.length; i++) {
//i代表每次获取的下标
//数组名[i] 下表对应的元素
}