ES6 新特性之Symbol

2021-09-07 19:08:36 字數 1238 閱讀 5067

symbol

let s1 = symbol('foo');

let s2 = symbol('bar');

s1 // symbol(foo)

s2 // symbol(bar)

s1.tostring() // "symbol(foo)"

s2.tostring() // "symbol(bar)"

es6 引入了一種新的原始資料型別symbol,表示獨一無二的值。

// 沒有引數的情況

let s1 = symbol();

let s2 = symbol();

s1 === s2 // false

// 有引數的情況

let s3 = symbol('foo');

let s4 = symbol('foo');

s3 === s4 // false

應用案例

const log = {};

log.levels = ;

console.log(log.levels.debug, 'debug message');

console.log(log.levels.info, 'info message');

const obj = {};

let a = symbol('a');

let b = symbol('b');

obj[a] = 'hello';

obj[b] = 'world';

const objectsymbols = object.getownpropertysymbols(obj);

objectsymbols

// [symbol(a), symbol(b)]

屬性名的遍歷。

有時,我們希望重新使用同乙個 symbol 值,symbol.for方法可以做到這一點。

let s1 = symbol.for('foo');

let s2 = symbol.for('foo');

s1 === s2 // true

symbol.for("bar") === symbol.for("bar")

// true

symbol("bar") === symbol("bar")

// false

ES6新特性教程(Symbol)

symbol資料型別 表示獨一無二的值 七種資料型別 undefined null 布林值 boolean 字串 string 數值 number 物件 object symbol 物件的屬性名現在可以有兩種型別,一種是原來就有的字串,另一種就是新增的 symbol 型別,性名屬於 symbol 型...

ES6新特性 增加新型別 Symbol

es6新增了一種資料型別 symbol,symbol是用來定義物件的唯一屬性名的不二之選 symbol如何使用呢,symbol不是乙個建構函式哦,如果用new symbol的話,會報錯的 執行下面 var sym1 symbol var sym2 symbol foo var sym3 symbol...

es6新特性 ES6新特性(一)

var 1 var宣告的是函式作用域 區域性 但在if for等定義的變數是全域性的 2 var 具有變數提公升,預解析 3 在同乙個作用域下,var可以宣告多次 4 var 宣告的變數會掛載到window上 let1 let不存在變數提公升,在變數使用之前,必須要先宣告 2 let在同一作用域下,...