ES6 Symbol資料型別

2021-08-08 23:30:57 字數 1969 閱讀 7933

基本的資料型別: null undefined number boolean string symbol

引用資料型別:object

let s1 = symbol();

let s2 = symbol();

console.log(typeof s1); //

'symbol'

console.log(s1 === s2);//

false

1) symbol 函式前不能使用 new 否則會報錯,原因在於 symbol 是乙個原始型別的值,不是物件。

let s3 = new symbol();//報錯
2) symbol 函式接收乙個字串作為引數,表示對symbol的描述,主要是為了在控制台顯示,或者轉為字串的時候,比較容易區分

let s3 = symbol('miaov');

let s4 = symbol('leo');

console.log(s3, s4);//miaov leo

但是這個引數僅僅是對這個值得描述,而不代表任何意義,看下面例子

console.log(symbol('momo') === symbol('momo'));//false
symbol轉string(字串)

console.log(string(symbol('miaov'))); // symbol(miaov)

console.log(symbol('leo').tostring()); // symbol(leo)

symbol轉boolean

console.log(!!symbol()); //

true

symbol不能轉數字

console.log(number(symbol()));//報錯
symbol不能做任何運算。

console.log(symbol('momo') + 'pangzi');//報錯

console.log(symbol('momo') * 100); //報錯

方法一

let yyy = symbol('yyy'); 

const obj = {};

obj[yyy] = 'hello';

console.log(obj);//鍵值對

console.log(obj[yyy]);//值

方法二

let ss = symbol('ss');

const data = ;

console.log(data);//鍵值對

console.log(data[ss]);//值

下面方式取不到

const

data = ;

console.log(data);

console.log(data['symbol

()']);//undefined

不能被for…in迴圈遍歷,如下所示。

const

data = ;

for(let i in

data)

雖然不能被遍歷,但是也不是私有的屬性,可以通過object.getownpropertysymbols方法獲得乙個物件的所有的symbol屬性

const

data = ;

console.log(object.getownpropertysymbols(data)); // [symbol

()]console.log(object.getownpropertysymbols(data)[0]);//123

ES6 symbol 以及symbol的簡單應用

1.es6 引入了一種新的原始資料型別symbol,表示獨一無二的值。2.symbol 值通過symbol函式生成。3.symbol 函式可以接受乙個字串作為引數,表示對 symbol 例項的描述,主要是為了在控制台顯示,或者轉為字串時,比較容易區分。4.es2019 提供了乙個例項屬性descri...

ES6 資料型別Symbol

1 symbol 定義的屬性,一般方法獲取不到 2 let name symbol 3 let obj 4 name 123 5 name 456 6 獲取symbol元素object.getownpropertysymbols 7object.getownpropertysymbols obj 8...

ES6 Symbol基本用法詳解

大家都知道,es5的物件的屬性名都是字串,這樣就很容易造成屬性名衝突,從而替代了原有物件的方法,於是,es6就提供了symbol,表示獨一無二的值,它是一種新的原始資料型別,symbol型別。注意哦!symbol是基本資料型別,所以不能使用new命令,否則會報錯。let s1 symbol 1,2 ...