日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6 Symbol的应用场景

發布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6 Symbol的应用场景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

具體使用請參考:API

ES6 引入了一種新的原始數據類型Symbol,表示獨一無二的值。它是 JavaScript 語言的第七種數據類型,前六種是:undefined、null、布爾值(Boolean)、字符串(String)、數值(Number)、對象(Object)。

Symbol 值通過Symbol函數生成。這就是說,對象的屬性名現在可以有兩種類型,一種是原來就有的字符串,另一種就是新增的 Symbol 類型。凡是屬性名屬于 Symbol 類型,就都是獨一無二的,可以保證不會與其他屬性名產生沖突。

注意,Symbol函數前不能使用new命令,否則會報錯。這是因為生成的 Symbol 是一個原始類型的值,不是對象。也就是說,由于 Symbol 值不是對象,所以不能添加屬性。基本上,它是一種類似于字符串的數據類型。

二、應用場景

1.

{let a1=Symbol.for('abc')let obj={[a1]:'123',//參考api中對象的擴展部分中屬性名表達式,這里[a1]代表變量a1的key'abc':'123','c':456}console.log('obj',obj) }

打印結果為

{abc: "123", c: 456, Symbol(abc): "123"}

可以看到兩個abc是不沖突的

注意

常規的for in,let of的方式去取 ,比如Object.entries,Object.keys,是拿不到symbol的值

for(let [key,value] of Object.entries(obj)){console.log('let of',key,value)}

結果為

let of abc 123let of c 456

解決方案是

1)使用Object.getOwnPropertySymbols(obj) 。這種方式只拿到了symbol的變量的值

Object.getOwnPropertySymbols(obj).forEach(function(item){console.log(obj[item])})

結果為

123

2)使用Reflect.ownKeys(obj)

Reflect.ownKeys(obj).forEach(function(item){console.log(obj[item])})

結果為

123 456 123

?

轉載于:https://www.cnblogs.com/knyel/p/7844178.html

總結

以上是生活随笔為你收集整理的ES6 Symbol的应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。