ECMAScript 6(ES6) 特性概览和与ES5的比较12-符号类型

十二.符号类型

1.符号类型

唯一且不可变的数据类型,用作对象属性的标识符。符号可以有可选的描述,但仅用于调试目的。

ECMAScript 6

Symbol("foo") !== Symbol("foo")
const foo = Symbol()
const bar = Symbol()
typeof foo === "symbol"
typeof bar === "symbol"
let obj = {}
obj[foo] = "foo"
obj[bar] = "bar"
JSON.stringify(obj) // {}
Object.keys(obj) // []
Object.getOwnPropertyNames(obj) // []
Object.getOwnPropertySymbols(obj) // [ foo, bar ]

ECMAScript 5

//ES5中没有对应表达

2.全局符号

通过唯一键索引

ECMAScript 6

Symbol.for("app.foo") === Symbol.for("app.foo")
const foo = Symbol.for("app.foo")
const bar = Symbol.for("app.bar")
Symbol.keyFor(foo) === "app.foo"
Symbol.keyFor(bar) === "app.bar"
typeof foo === "symbol"
typeof bar === "symbol"
let obj = {}
obj[foo] = "foo"
obj[bar] = "bar"
JSON.stringify(obj) // {}
Object.keys(obj) // []
Object.getOwnPropertyNames(obj) // []
Object.getOwnPropertySymbols(obj) // [ foo, bar ]

ECMAScript 5

//ES5中没有对应表达

猜你喜欢

转载自blog.csdn.net/u010622874/article/details/84030438