做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例)

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:28:40
文檔

ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例)

ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例):本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。symbol是es6出的一種類(lèi)型,他也是屬于原始類(lèi)型的范疇(string, number, boolean, null, undefine
推薦度:
導(dǎo)讀ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例):本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。symbol是es6出的一種類(lèi)型,他也是屬于原始類(lèi)型的范疇(string, number, boolean, null, undefine

本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

symbol是es6出的一種類(lèi)型,他也是屬于原始類(lèi)型的范疇(string, number, boolean, null, undefined, symbol)

basic

let name = Symbol('xiaohesong')
typeof name // 'symbol'
let obj = {}
obj[name] = 'xhs'
console.log(obj[name]) //xhs

symbol for

這個(gè)東西是可共享,在創(chuàng)建的時(shí)候會(huì)檢查全局是否尋在這個(gè)key的symbol.如果存在就直接返回這個(gè)symbol,如果不存在就會(huì)創(chuàng)建,并且在全局注冊(cè)。

let uid = Symbol.for("uid");
let object = {
 [uid]: "12345"
};

console.log(object[uid]); // "12345"
console.log(uid); // "Symbol(uid)"

let uid2 = Symbol.for("uid");

console.log(uid === uid2); // true
console.log(object[uid2]); // "12345"
console.log(uid2); // "Symbol(uid)"
此處所說(shuō)的共享是全局性的共享,類(lèi)似于global scope,是整個(gè)大環(huán)境下的共享.

symbol keyfor

let uid = Symbol.for("uid");
console.log(Symbol.keyFor(uid)); // "uid"

let uid2 = Symbol.for("uid");
console.log(Symbol.keyFor(uid2)); // "uid"

let uid3 = Symbol("uid");
console.log(Symbol.keyFor(uid3)); // undefined

全局注冊(cè)表不存在uid3這個(gè)共享的symbol.所以取不出對(duì)應(yīng)的key.由此可見(jiàn),這個(gè)是獲取對(duì)應(yīng)的key.

symbol 不可強(qiáng)制轉(zhuǎn)換

let uid = Symbol('uid')
uid + ''

這里會(huì)報(bào)錯(cuò),根據(jù)規(guī)范,他會(huì)把uid轉(zhuǎn)換成字符串進(jìn)行相加。如果真的相加,可以先String(uid)之后再相加,不過(guò)目前看來(lái),似乎沒(méi)什么意義。

obj中symbol key的獲取

let uid = Symbol('uid')
let obj = {
 [uid]: 'uid'
}

console.log(Object.keys(obj)) // []
console.log(Object.getOwnPropertyNames(obj)) // []
console.log(Object.getOwnPropertySymbols(obj)) // [Symbol(uid)]

es6針對(duì)這個(gè),添加了Object.getOwnPropertySymbols方法。

是不是感覺(jué)很少用到Symbols.其實(shí)es6內(nèi)部用的還是不少的。

Symbol.hasInstance

每個(gè)函數(shù)都有這個(gè)方法。或許你對(duì)這個(gè)方法不是很熟,他其實(shí)就是instanceof所做的事情。 沒(méi)錯(cuò),es6給你重寫(xiě)了這個(gè)方法。

function Xiao(){}
const xiao = new Xiao
xiao instanceof Xiao // true

實(shí)際上es6幫你那么干了

Xiao[Symbol.hasInstance](xiao)

這個(gè)是內(nèi)部的方法,不支持重寫(xiě),當(dāng)然,我們可以在原型上改寫(xiě)。

Object.definePrototype(Xiao, Symbol.hasInstance, {
 value: (v) : Boolean(v)
})
const x = new Xiao
x instanceof Xiao //true
0 instanceof Xiao //false
1 instanceof Xiao //true

可以發(fā)現(xiàn),我們改寫(xiě)他返回對(duì)應(yīng)的是否為boolean類(lèi)型。

Symbol.isConcatSpreadable

這個(gè)和其他的一些屬性不同,他是默認(rèn)不存在一些標(biāo)準(zhǔn)對(duì)象上。簡(jiǎn)單的使用

let objs = {0: 'first', 1: 'second', length: 2, [Symbol.isConcatSpreadable]: true}
['arrs'].concat(objs) //["arrs", "first", "second"]

Symbol.toPrimitive

這個(gè)用的就多了,進(jìn)行類(lèi)型轉(zhuǎn)換的時(shí)候,對(duì)象會(huì)進(jìn)行嘗試轉(zhuǎn)換成原始類(lèi)型,就是通過(guò)toPrimitive.這個(gè)方法,標(biāo)準(zhǔn)類(lèi)型的原型上都存在。
進(jìn)行類(lèi)型轉(zhuǎn)換的時(shí)候,toPrimitive會(huì)被強(qiáng)制的調(diào)用一個(gè)參數(shù),在規(guī)范中這個(gè)參數(shù)被稱(chēng)之為hint. 這個(gè)參數(shù)是三個(gè)值('number', 'string', 'default')其中的一個(gè)。
顧名思義,string返回的是string, number返回的是number,default是沒(méi)有特別指定,默認(rèn)。
那么什么是默認(rèn)的情況呢? 大多數(shù)的情況下,默認(rèn)情況就是數(shù)字模式。(日期除外,他的默認(rèn)情況視為字符串模式)
其實(shí)在類(lèi)型轉(zhuǎn)換時(shí)調(diào)用默認(rèn)情況的也不是很多。如(==, +)或者將參數(shù)傳遞給Date的構(gòu)造參數(shù)的時(shí)候。

  • number mode 在數(shù)字情況下的行為(優(yōu)先級(jí)從高到低)

  • 首先調(diào)用valueOf,如果是一個(gè)原始類(lèi)型,那就返回。

  • 如果前面不是原始值,那么就嘗試調(diào)用toString,如果是原始值,那么就返回

  • 如果都不存在,那么就報(bào)錯(cuò)

  • string mode 在字符串的情況下,行為略有不同(優(yōu)先級(jí)從高到低)

  • 首先調(diào)用toString,如果是原始值,那么就返回

  • 如果前面不是原始值,那么就嘗試調(diào)用valueOf,如果是原始值,那么就返回

  • 拋出錯(cuò)誤

  • 嗯,是不是感覺(jué)挺繞的,是啊,代碼闡述下嘛。

    let obj = {
     valueOf: function(){console.log('valueOf')},
     toString: function(){console.log('toString')}
    }
    // console.log value is
    obj + 2 //valueOf
    obj == 2 // valueOf
    Number(obj) // valueOf
    String(obj) // toString

    通過(guò)上面的輸出,可以發(fā)現(xiàn)大多數(shù)的情況都是首先調(diào)用valueOf.
    包括默認(rèn)的情況,他的默認(rèn)是調(diào)用的數(shù)字模式,而且絕大數(shù)都是調(diào)用的數(shù)字模式,可以發(fā)現(xiàn)toString是調(diào)用了string的模式。所以你可以認(rèn)為,基本就是數(shù)字模式,除非很顯示的是字符串模式。
    對(duì)于這個(gè)調(diào)用的模式還不是很清楚?沒(méi)事,es6把這個(gè)內(nèi)部的方法對(duì)外暴露出來(lái)了,我們可以改寫(xiě)他,輸出這個(gè)hint的類(lèi)型。 來(lái)

    function Temperature(degrees) {
     this.degrees = degrees;
    }
    
    Temperature.prototype[Symbol.toPrimitive] = function(hint) {
     console.log('hint is', hint)
    };
    
    let freezing = new Temperature(32);
    
    freezing + 2 // ..
    freezing / 2 // ..
    ...

    上面的類(lèi)型,你可以試試。

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例)

    ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例):本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于ES6中Symbol相關(guān)知識(shí)的介紹(代碼示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。symbol是es6出的一種類(lèi)型,他也是屬于原始類(lèi)型的范疇(string, number, boolean, null, undefine
    推薦度:
    標(biāo)簽: 介紹 知識(shí) 簡(jiǎn)介
    • 熱門(mén)焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門(mén)推薦

    專(zhuān)題
    Top
    主站蜘蛛池模板: 察隅县| 巧家县| 阿巴嘎旗| 二连浩特市| 溆浦县| 彩票| 平度市| 静海县| 盐城市| 望城县| 新田县| 安宁市| 兴义市| 姜堰市| 贵阳市| 永和县| 陆河县| 特克斯县| 翁牛特旗| 临桂县| 台东县| 鸡西市| 潢川县| 射洪县| 武邑县| 大余县| 冕宁县| 永登县| 房山区| 兴和县| 珲春市| 临湘市| 双流县| 安岳县| 安西县| 博湖县| 乌海市| 宁国市| 勐海县| 巍山| 上高县|