新聞中心
這篇文章主要用實(shí)例解析ES6 Symbol在對(duì)象中的作用,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出土默特左旗免費(fèi)做網(wǎng)站回饋大家。
本文實(shí)例講述了ES6 Symbol在對(duì)象中的作用。分享給大家供大家參考,具體如下:
在ES5中 對(duì)象屬性名都是字符串,這容易造成屬性名的沖突,比如,你使用了一個(gè)他人提供的對(duì)象,但又想為這個(gè)對(duì)象添加新的方法(mixin 模式),新方法的名字就有可能與現(xiàn)有方法產(chǎn)生沖突,于是 ES6 引入了Symbol。Symbol是一種新的原始數(shù)據(jù)類型,表示獨(dú)一無(wú)二的值。它是繼undefined、null、布爾值(Boolean)、字符串(String)、數(shù)值(Number)、對(duì)象(Object)六種數(shù)據(jù)類型之后的第七種數(shù)據(jù)類型。凡是屬性名屬于 Symbol 類型,就都是獨(dú)一無(wú)二的,可以保證不會(huì)與其他屬性名產(chǎn)生沖突。
1.聲明Symbol
Symbol函數(shù)可以接受一個(gè)字符串作為參數(shù),表示對(duì) Symbol 實(shí)例的描述,主要是為了在控制臺(tái)顯示,或者轉(zhuǎn)為字符串時(shí),比較容易區(qū)分。
var f= Symbol();//Symbol() var f= Symbol('foo');//Symbol(foo)
// 沒(méi)有參數(shù)的情況 let s1 = Symbol(); let s2 = Symbol(); s1 === s2 // false // 有參數(shù)的情況 let s1 = Symbol('foo'); let s2 = Symbol('foo'); s1 === s2 // false
注意,Symbol函數(shù)的參數(shù)只是表示對(duì)當(dāng)前 Symbol 值的描述,因此相同參數(shù)的Symbol函數(shù)的返回值是不相等的。
s1和s2都是Symbol函數(shù)的返回值,而且參數(shù)相同,但是它們是不相等的。
2.Symbol在對(duì)象中的應(yīng)用
Symbol作為屬性名:
let mySymbol = Symbol(); // 第一種寫法 let a = {}; a[mySymbol] = 'Hello!'; // 第二種寫法 let a = { [mySymbol]: 'Hello!' }; // 第三種寫法 let a = {}; Object.defineProperty(a, mySymbol, { value: 'Hello!' }); // 以上寫法都得到同樣結(jié)果 a[mySymbol] // "Hello!"
賦值-括號(hào)形式:
a[mySymbol]='web';
3.Symbol對(duì)象元素的保護(hù)作用
在對(duì)象中有很多值,但是循環(huán)輸出時(shí),并不希望全部輸出,那我們就可以使用Symbol進(jìn)行保護(hù)。
沒(méi)有進(jìn)行保護(hù)的寫法:
var obj={name:'小明',skill:'web',age:18}; for (let item in obj){ console.log(obj[item]); }
現(xiàn)在我不想別人知道我的年齡,這時(shí)候我就可以使用Symbol來(lái)進(jìn)行循環(huán)保護(hù)。
let obj={name:'小明',skill:'web'}; let age=Symbol(); obj[age]=18; for (let item in obj){ console.log(obj[item]);//小明、web } console.log(obj[age]);
看完上述內(nèi)容,是不是對(duì)用實(shí)例解析ES6 Symbol在對(duì)象中的作用有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前標(biāo)題:用實(shí)例解析ES6Symbol在對(duì)象中的作用
文章鏈接:http://www.dlmjj.cn/article/pjidsc.html