Symbol类型,简单了解下

21 篇文章 14 订阅
<!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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值