<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Symbol类型</title>
</head>
<style>
dd{
margin:20px 0;
}
dd h4{
color: red;
margin:5px;
}
</style>
<body>
<dl>
<dd>
<h4>是什么?</h4>
五大原始数据类型:string,number,boolean,undefined,null.<br/>
Symbol 是一种特殊的、不可变的数据类型,可以作为对象属性的标识符使用.
</dd>
<dd>
<h4>Symbol的语法格式:</h4>
Symbol([description]) //description是可选的
</dd>
<dd>
<h4>创建一个Symbol:</h4>
const name = Symbol() <br/>
const sym = Symbol('sym1')
</dd>
<dd>
<h4>使用Symbol</h4>
<p>使用Number的时候,我们可以这样写</p>
const b = Number(10)
//简写
const b = 10
<p>同理,使用Symbol,我们可以这样:</p>
const name1 = Symbol('sym1'); // Symbol(sym1)
<p>在所有使用可计算属性名的地方,都能使用Symbol类型。比如在对象中的key。 </p>
const name = Symbol('name'); <br/>
const obj = {
[name]: "haha"
} <br/>
console.log(obj[name]) // haha
</dd>
<dd>
<h4>Symbol全局共享</h4>
<p>Symbol有点特殊,在js文件中定义的Symbol,并不能在其他文件直接共享。</p>
<p>
ES6提供了一个注册机制,当你注册Symbol之后,就能在全局共享注册表里面在其他文件中获取Symbol
</p>
<p>
注册语法:let name = Symbol.for(val) <br/> //val为设置的值
获取语法:Symbol.keyFor(key) //key为数据存储Symbol类型数据的变量
</p>
</dd>
<dd>
<h4>对象中Symbol检索</h4>
如果使用Symbol做key,只能使用es6方法,通过Object.getOwnPropertySymbols()方法获取key
</dd>
</dl>
</body>
<script>
//创建一个Symbol
const name = Symbol();
const sym = Symbol('sym1');
console.log(name,sym) // Symbol() Symbol(sym1)
//使用Symbol
const age = Symbol('age');
const obj = {
[age]:27
}
console.log(obj[age]); //注意:Symbol类型的属性,只能用[]来访问其属性值,不可用obj.key。
//Symbol全局共享 ,在symbol.js中获取值
let sex = Symbol.for('男');
//对象中Symbol检索
const symbolArr = Object.getOwnPropertySymbols(obj);
symbolArr.forEach((val,index)=>{
console.log(index,val);
})
</script>
<script type="text/javascript" src="symbol.js"></script>
</html>
Symbol类型,简单了解下
最新推荐文章于 2024-03-26 12:37:24 发布