javascript中的symbol
symbol的使用
功能
类似于一种标志唯一性的ID
理解唯一性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
let s1=Symbol()
let s2=Symbol("hello world")
let s3=Symbol("hello world")
console.log(s1==s2)//false
console.log(s2==s3)//false
</script>
</body>
</html>
用symbol作为对象的属性名(相当于私有化)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
const NAME = Symbol()
const AGE = Symbol()
let obj = {
[NAME]: "PeiEn", //NAME:"PeiEn"是错误形式
hobby: "basketball"
}
obj[AGE] = 18
console.log(obj)
//取值
console.log(Object.keys(obj)) //枚举不到symbol [hobby]
for (let o in obj) {
console.log(o) //枚举不到symbol
}
console.log(Object.getOwnPropertyNames(obj))//枚举不到symbol
console.log(JSON.stringify(obj));//枚举不到symbol
//-------------------------------------------------------------------
//只能取到私有的
console.log(Object.getOwnPropertySymbols(obj))
//可以取到全部
console.log(Reflect.ownKeys(obj))
</script>
</body>
</html>
用symbol代替一些常量
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//如果定义一些枚举性的常量
//尽量去使用一些symbol,可以更安全,也能更美观
const s1=Symbol()
const s2=Symbol()
const s3=Symbol()
</script>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现