SOURCE

/**
 * 为什么需要引用类型
 * 有一些数据并不像基本类型一样单纯,它可能是有多个基本数据类型的集合
 * 比如我们要表示一款游戏的介绍信息,只有基本数据类型的话
 */
 let name = 'LOL' //名字
 let author = 'Riot' //作者
 let price = 0 //价格
 //没啥问题,但是如果有很多游戏岂不是得name1 name2 name3...
 //至少看着不舒服,而且跨文件和作用域的时候不好统一获取他们
 //所以我们用一个基本数据类型的集合来表示一款游戏
 let game1 = {
     name: 'LOL',
     author: 'Riot',
     price: 0
 }
 let game2 = {
     name: '饥荒',
     author: '忘了',
     price: 20
 }
 //这样看着舒服多了,访问他们的详情
 console.log(game1.name) //打印game1的名字!

 /**
  * 上面这种花括号定义的数据类型是用键值对呈现的(key: value)
  * 行话常说的哈希表(hashtable),哈希map(hashamap),map,字典,映射在js里面都是这玩意儿
  * 通过键(key)访问值(value),就像通过变量访问值一样一样的,只是这些值统一放在一个变量里面
  */
 
 /**
  * how to use it!
  */
 //所有数据就俩功能,读和写
 //读就是获取值的过程,很简单,而写则包括了增加 删除 修改三种方式。
 //所有的程序本质功能都是这俩玩意儿,即便是各种文件也是一个提供增删改查的数据

 //读取元素
 game1.name  //读取了game1的name值
 //or
 game1["name"]
 
 //修改元素
 game1.price = 78 //这下game1成收费游戏了
 //or
 game1["price"] = 78
 
 //添加元素
 //现在给game1添加一个新元素time表示发布时间
 //map就是这样,没有的key机会添加上去,有就是修改和修改一毛一样
 game1.time = 2010
 //or
 game1["time"] = 2010

 //删除元素
 delete game1.time //一般没人这样干
 game1.time = null  //一般这样干,赋值为null就行了,虽然还存在这个key但值为null,二者区别具体后面讲
 
 //数组
 /**
  * 数组就是一系列数据的组合,和上面的map一样,正经数组的元素类型都是一样的。
  */
 //声明一个number类型的数组 它很正经,它所有元素(1 2 3)都是number
 let nums = [1, 2, 3] //nums数组包含了三个元素,它的长度为3
 
 //读取数组元素
 //你可以这样访问数组元素
 nums[0] //1 数组第一个元素 程序员计数都是从0开始的
 nums[1] //2
 nums[2] //3
 nums[3] //出错,没有第四个元素
 
//增加元素
//nums[3] = 4 一般不这么干,即便你nums[10000] = 4也没事,但是你这个数组的长度已经是10001了!中间有很多浪费的空间!
//or
nums.push(4) //在数组末尾增加一个元素4
nums.unshift(4) //在数组最前面增加一个元素4
//现在打印数组康康
console.log(nums) //[4, 1, 2, 3, 4]

//修改和map一样,直接修改
nums[0] = 0 //第一位变为0了!打印一下看看是不是[0, 1, 2, 3, 4]
console.log(nums)

//删除元素
nums.pop() //从数组末尾删除一个元素
nums.shift() //从数组开头删除一个元素

//?那中间呢!
nums.splice(1, 1) //表示从第二号元素开始删除1个元素 [1, 2, 3] -> [1, 3] nums[1]为2,从2开始删1个,所以2被删了只剩[1, 3]
console.log(nums)

/**
 * 总结
 * 常用的两种引用类型 map(也称为对象object,但是object范围很广,数组也是object,所以先记为map) 和数组array
 */

 //map声明
 const map1 = {
     name: "nico"
 }
 //map增加元素
 map1.score = 100
 //map修改元素
 map1.score = 99

 //数组声明
 const arr1 = [1, 2, 3]
 //数组增加元素
 arr1.push(4)
 arr1.unshift(0)
 //数组删除元素
 arr1.pop()
 arr1.shift()
 arr1.splice(1, 1)
 //数组修改元素
 arr1[0] = 100
console 命令行工具 X clear

                    
>
console