最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳細(xì)談?wù)凟S6中的symbol數(shù)據(jù)類型

 更新時(shí)間:2021年08月19日 09:05:53   作者:山外小樓夜聽風(fēng)  
這篇文章主要給大家介紹了關(guān)于ES6中symbol數(shù)據(jù)類型的相關(guān)資料,Symbol函數(shù)的特性是每一個(gè)Symbol函數(shù)的返回值都是唯一的,可以通過給symbol函數(shù)傳遞不同的參數(shù)產(chǎn)生具有不同標(biāo)記的值,需要的朋友可以參考下

symbol數(shù)據(jù)類型

js語言中,ES6前有6種數(shù)據(jù)類型。

ES6新提出symbol數(shù)據(jù)類型,所以symbol是js的第七種數(shù)據(jù)類型,表示獨(dú)一無二的值。是一種類似于字符串的數(shù)據(jù)類型。

目的是為了防止屬性名的沖突,保證對(duì)象中每一個(gè)屬性名都是獨(dú)一無二的。

let s1 = Symbol('foo');
let s2 = Symbol('foo');

s1 === s2 // false

Symbol類型可以有一個(gè)字符串參數(shù),表示對(duì)Symbol實(shí)例的描述。所以相同描述的兩個(gè)Symbol類型實(shí)例也是不相等的。

symbol出現(xiàn)的原因

ES5 的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。比如,你使用了一個(gè)他人提供的對(duì)象,但又想為這個(gè)對(duì)象添加新的方法(mixin 模式),新方法的名字就有可能與現(xiàn)有方法產(chǎn)生沖突。如果有一種機(jī)制,保證每個(gè)屬性的名字都是獨(dú)一無二的就好了,這樣就從根本上防止屬性名的沖突。這就是 ES6 引入Symbol的原因

Symbol特點(diǎn)

  • Symbol的值是唯一的,用來解決命名沖突的問題
  • Slymbol 值不能與其他數(shù)據(jù)進(jìn)行運(yùn)算
  • Symbol 定義的對(duì)象屬性不能使用fr..in 循環(huán)遍歷,但是可以使用Reflect.ownKeys來獲取對(duì)象的所有鍵名
  • Symbol函數(shù)前不能使用new命令,否則會(huì)報(bào)錯(cuò)。這是因?yàn)樯傻?Symbol 是一個(gè)原始類型的值,不是對(duì)象。也就是說,由于 Symbol 值不是對(duì)象,所以不能添加屬性?;旧希且环N類似于字符串的數(shù)據(jù)類型。
//創(chuàng)建Symbol
let s= Symbol();
console.log(s, typeof s);


// 試試創(chuàng)建2個(gè)symbol相同
let s2 = Symbol(' 辣雞rb');
let s3 = Symbol(' 辣雞rb');
console.log(s2 === s3); //false


//用Symbol.for創(chuàng)建一樣的symbol
let s4 = Symbol.for('辣雞rb');
let s5 = Symbol.for('辣雞rb');
console.log(s4 === s5); //true


//不能與其他數(shù)據(jù)進(jìn)行運(yùn)算
let result = s + 100;//報(bào)錯(cuò),

文章結(jié)尾回顧一下js的數(shù)據(jù)類型

引用尚硅谷的一個(gè)記憶口訣

// USONB =>you are so .niubility 你是如此牛逼

// u=>undefined

// s=>string symbol

// 0=>object

// n=>null number

// b=>boolean

思考一下,決定再寫點(diǎn),

symbol的應(yīng)用

在rb對(duì)象中添加up和down方法

方法1

let rb = {
    name: '日本戰(zhàn)犯',
    age: 500,
};
// 用symbol處理
// 聲明對(duì)象,里面包含兩個(gè)方法,方法用symbol()寫
let methods = {
    up: Symbol(),
    down: Symbol()
};
// 把方法加進(jìn)去
rb[methods.up] = function () {
    console.log('原諒說的是人');
};
rb[methods.down] = function () {
    console.log('畜生沒臉讓中華兒女原諒它');
};
console.log(rb);

方法2

在rb對(duì)象中添加sb和dsb方法

let rb = {
    name: '日本戰(zhàn)犯',
    age: 500,
    [Symbol('sb')]: function () {
        console.log('我喜歡日本動(dòng)畫');
    },
     [Symbol('dsb')]: function () {
         console.log('但不妨礙我恨他們?cè)谌A夏大地犯的罪');
     },
};

console.log(rb);

Symbol內(nèi)置的屬性值

  • Symbol.hasInstance:其它對(duì)象使用instanceof運(yùn)算符的時(shí)候會(huì)使用該屬性名指向的內(nèi)部方法。
  • Symbol.isConcatSpreadable
  • Symbol.species
  • Symbol.match
  • Symbol.replace
  • Symbol.search
  • Symbol.split
  • Symbol.iterator
  • Symbol.toPrimitive
  • Symbol.toStringTag
  • Symbol.unscopables

總結(jié)

到此這篇關(guān)于ES6中symbol數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)ES6的symbol數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序progress組件使用詳解

    微信小程序progress組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序progress組件的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java必學(xué)必會(huì)之static關(guān)鍵字

    java必學(xué)必會(huì)之static關(guān)鍵字

    java必學(xué)必會(huì)之static關(guān)鍵字,static關(guān)鍵字是很多朋友在編寫代碼和閱讀代碼時(shí)碰到的比較難以理解的一個(gè)關(guān)鍵字,下面結(jié)合大家一起學(xué)習(xí)static關(guān)鍵字
    2015-12-12
  • 詳解webpack 入門總結(jié)和實(shí)踐(按需異步加載,css單獨(dú)打包,生成多個(gè)入口文件)

    詳解webpack 入門總結(jié)和實(shí)踐(按需異步加載,css單獨(dú)打包,生成多個(gè)入口文件)

    本篇文章主要介紹了webpack 入門總結(jié)和實(shí)踐(按需異步加載,css單獨(dú)打包,生成多個(gè)入口文件) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • JS彈出窗口插件zDialog簡(jiǎn)單用法示例

    JS彈出窗口插件zDialog簡(jiǎn)單用法示例

    這篇文章主要介紹了JS彈出窗口插件zDialog簡(jiǎn)單用法,結(jié)合簡(jiǎn)單實(shí)例形式分析了zDialog插件彈出窗口的基本使用方法與參數(shù)含義,需要的朋友可以參考下
    2016-06-06
  • 使用javaScript實(shí)現(xiàn)鼠標(biāo)拖拽事件

    使用javaScript實(shí)現(xiàn)鼠標(biāo)拖拽事件

    這篇文章主要為大家詳細(xì)介紹了使用javaScript實(shí)現(xiàn)鼠標(biāo)拖拽事件的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • JS實(shí)現(xiàn)文件動(dòng)態(tài)順序載入的方法

    JS實(shí)現(xiàn)文件動(dòng)態(tài)順序載入的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)文件動(dòng)態(tài)順序載入的方法,實(shí)例分析了基于Mootools框架實(shí)現(xiàn)動(dòng)態(tài)載入的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 利用JavaScript實(shí)現(xiàn)防抖節(jié)流函數(shù)的示例代碼

    利用JavaScript實(shí)現(xiàn)防抖節(jié)流函數(shù)的示例代碼

    在開發(fā)中我們經(jīng)常會(huì)遇到一些高頻操作,比如:鼠標(biāo)移動(dòng),滑動(dòng)窗口,鍵盤輸入等等,節(jié)流和防抖就是對(duì)此類事件進(jìn)行優(yōu)化,降低觸發(fā)的頻率,以達(dá)到提高性能的目的。本文就教大家如何實(shí)現(xiàn)一個(gè)讓面試官拍大腿的防抖節(jié)流函數(shù),需要的可以參考一下
    2022-08-08
  • 微信小程序?qū)崿F(xiàn)瀑布流布局與無限加載的方法詳解

    微信小程序?qū)崿F(xiàn)瀑布流布局與無限加載的方法詳解

    瀑布流布局是我們?nèi)粘i_發(fā)中經(jīng)常見到的一種頁面布局方式,下面這篇文章主要給大家介紹了微信小程序?qū)崿F(xiàn)瀑布流布局與無限加載的相關(guān)資料,文中給出了詳細(xì)介紹和示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。
    2017-05-05
  • localStorage過期時(shí)間設(shè)置的幾種方法

    localStorage過期時(shí)間設(shè)置的幾種方法

    聊到localStorage想必熟悉前端的朋友都不會(huì)陌生,在實(shí)際的應(yīng)用場(chǎng)景中,我們往往需要讓localStorage設(shè)置的某個(gè)key能在指定時(shí)間內(nèi)自動(dòng)失效,所以基于這種場(chǎng)景,我們?nèi)绾稳ソ鉀Q呢,本文就詳細(xì)的介紹一下
    2021-12-12
  • JavaScript經(jīng)典案例之簡(jiǎn)易計(jì)算器

    JavaScript經(jīng)典案例之簡(jiǎn)易計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了JavaScript經(jīng)典案例之簡(jiǎn)易計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評(píng)論

天水市| 平阳县| 犍为县| 延庆县| 德惠市| 保定市| 威海市| 周口市| 田阳县| 腾冲县| 平罗县| 乌拉特后旗| 即墨市| 明光市| 城口县| 铜陵市| 海林市| 双柏县| 岳西县| 兰州市| 抚州市| 永康市| 景洪市| 杨浦区| 龙里县| 遂平县| 沙田区| 千阳县| 萝北县| 桂阳县| 文化| 合阳县| 依安县| 平果县| 徐州市| 双桥区| 五家渠市| 曲阜市| 马关县| 五常市| 连城县|