当前位置:网站首页>ES6新语法:symbol,map容器
ES6新语法:symbol,map容器
2022-08-04 05:34:00 【初夏半微凉】
Symbol
es5:五个基本数据类型 number boolean string undefined null
es6:一个基本数据类型 symbol
symbol的作用:
为了防止有一样的名字造成后面的覆盖前面的代码功能
所以es6出了一个symbol来表示独一无二的
以后有相同的变量名也不会覆盖,不是同一个
即他是一个内置全局函数,生成一个独一无二的数据
let s1 = Symbol(10);
let s2 = Symbol(10);
console.log(s1,s2,s1==s2) // Symbol(100),Symbol(100),false
ES6的新数据容器:map
map没有创建的语法糖,就是可以简写的写法
var m1=new Map([["age",100],[20,"hello"],[a,90]])
//取数据,键值是什么就完全按照那样写,否则取不出来,对应的值
var re1=m1.get("age")
var re2=m1.get(20)
var re3=m1.get(["key"])
var re4=m1.get(a)
console.log(re1,re2,re3,re4)
//存数据
m1.set("life",1)
m1.set("age",1)
console.log(m1)
// 查看s1里面有多少个值
console.log(m1.size)
// 删除s1中的元素
m1.delete(20)
var re5=m1.delete("age")
var re6=m1.delete("age")
console.log(m1,re5,re6)
// 直接全部清空s1里面的函数
m1.clear()
console.log(m1)
用map来做一个类似于购物车的功能
可以进行商品的加减,也可以删除,计算商品总和
//没有进行页面的设计 就用控制台打印输出
//后端取出来的数据 要先解析然后保存到前端的某个数据容器中
var mycar = {
data: new Map(),
// 一键清除购物车里的所有商品
clear:function(){
this.data.clear()
},
// 减去商品的件数
jianshao:function(id){
let obj=this.data.get(id)
if(obj){
obj.count--
if(obj.count<=0){
this.data.delete(id)
}
}
},
// 增加商品的件数
add: function(id) {
let obj = this.data.get(id)
if (obj) {
obj.count++
this.data.set(id, obj)
}
},
// 计算商品的总和
total: function() {
var result = 0;
this.data.forEach(function(el) {
console.log(el)
result += el.count * el.price
})
return result
},
network: function() {
// 由后端传入前端的数据,现在没有链接数据库,所有自己先写几个数据进去
var jiashuju = [{
id: 1234,
title: "小炒肉",
price: 18,
count: 1
}, {
id: 1235,
title: "东坡"肘子,
price: 28,
count: 1
}, {
id: 1236,
title: "米饭",
price: 2,
count: 2
}];
var self = this
jiashuju.map(function(el) {
self.data.set(el.id, el)
})
}
}
// 调用数据
mycar.network()
// 现在没有绑定鼠标单击事件,所有由手动添加
mycar.add(1236)
mycar.add(1236)
mycar.add(1236)
mycar.add(1236)
mycar.jianshao(1234)
console.log(mycar.data)
var re1 = mycar.total()
console.log(re1)
// 调用一键清除功能
mycar.clear()
console.log(mycar.data)
边栏推荐
- VS 2017编译 QT no such slot || 找不到*** 问题
- Computer software: recommend a disk space analysis tool - WizTree
- Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same
- 并发概念基础:线程安全与线程间通信
- 关于gopher协议的ssrf攻击
- 子空间结构保持的多层极限学习机自编码器(ML-SELM-AE)
- Software: Recommend a domestic and very easy-to-use efficiency software uTools to everyone
- JUC锁框架——基于AQS的实现,从ReentrantLock认识独占和共享
- 第九篇 ApplicationContext初始化
- golang chan
猜你喜欢
树莓派 4 B 拨动开关控制风扇 Rasberry Pi 4 B Add Toggle Switch for the Fan
解决腾讯云DescribeInstances api查询20条记录以上的问题
Network skills: teach you to install batteries on the router, you can still surf the Internet when the power is cut off!
QT 出现多冲定义问题
VMD combined with ISSA to optimize LSSVM power prediction
无监督特征对齐的迁移学习理论框架
数据库:整理四个实用的SQLServer脚本函数
Operating System Kernel
SENet detailed explanation and Keras reproduction code
ResNet详解:ResNet到底在解决什么问题?
随机推荐
EfficientNet解读:神经网络的复合缩放方法(基于tf-Kersa复现代码)
MAML原理讲解和代码实现
数据库技巧:整理SQLServer非常实用的脚本
Faster - RCNN principle and repetition code
Uos统信系统 SSH
Logical Address & Physical Address
安全漏洞是如何被发现的?
Microsoft Store 微软应用商店无法连接网络,错误代码:0x80131500
GRNN、RBF、PNN、KELM之间究竟有什么联系?
Detailed explanation of DenseNet and Keras reproduction code
SENet detailed explanation and Keras reproduction code
华硕飞行堡垒系列无线网经常显示“无法连接网络” || 一打开游戏就断网
把DocumentsandSettings迁移到别的盘
RuntimeError: You called this URL via POST, but the URL doesn‘t end in a slash and you have APPEND_S
树莓派 4 B 拨动开关控制风扇 Rasberry Pi 4 B Add Toggle Switch for the Fan
学好网络安全看这篇文章让你少走弯路
YOLOv3详解:从零开始搭建YOLOv3网络
网络安全求职指南
LeetCode刷题
硬件知识:RTMP和RTSP传统流媒体协议介绍