共计 1600 个字符,预计需要花费 4 分钟才能阅读完成。
目录
- 简介
- 为什么要有这个数据类型
-
作用
- 如果想用 toString 办法,又怕和原生的抵触,能够用 Symbol
- 更适宜做公有属性,因为一般的遍历是拜访不到的
- 目前最次要的作用就是为对象增加举世无双的属性名
- 应用 symbol
- 取值
- ES6-ES10 学习幅员
简介
一种全新的原始数据类型,js 的根本数据类型。** 不那么深刻,就先简略记个笔记
为什么要有这个数据类型
之前当不一样的文件中,对同一个变量进行操作的时候,会有净化的状况,所以为了解决这种问题,约定俗称会在属性名中增加文件名。
作用
如果想用 toString 办法,又怕和原生的抵触,能够用 Symbol
const obj = {[Symbol.toStringTag]: 'XObject' | |
} | |
console.log(obj.toString()) // [object XObject] |
更适宜做公有属性,因为一般的遍历是拜访不到的
const obj1 = {[Symbol()]: 'symbol value', | |
foo: 'normal value' | |
} | |
for(let key in obj1) {console.log(key) // foo | |
} | |
console.log(Object.keys(obj1)) // ['foo'] | |
console.log(JSON.stringify(obj1)) // {"foo":"normal value"} | |
// 应用上面的办法,能够获取到 symbol 的属性名 | |
console.log(Object.getOwnPropertySymbols(obj1)) // [Symbol() ] |
目前最次要的作用就是 为对象增加举世无双的属性名
// shared.js | |
const cache = {} | |
// a.js | |
cache['foo'] = 123 | |
// b.js | |
cache['foo'] = 234 | |
console.log(cache) // {foo: 234} | |
// ============================================== | |
// a.js | |
cache['a_foo'] = 123 | |
// b.js | |
cache['b_foo'] = 234 | |
console.log(cache) // {a_foo: 123, b_foo: 234} |
应用 symbol
// 通过 symbol 函数创立一个 symbol 类型的数据 | |
const s = Symbol() | |
console.log(s) // Symbol() | |
console.log(typeof s) // symbol | |
console.log(Symbol() === Symbol()) // false 举世无双的数据 | |
// 咱们能够增加形容文本 | |
console.log(Symbol('foo')) // Symbol(foo) | |
console.log(Symbol('bar')) // Symbol(bar) | |
// 对象的属性名能够是 symbol 类型也能够是 string 类型 | |
// a.js | |
const name = Symbol() | |
const person = {[name] : 'xm', | |
say () {console.log(this[name]) | |
} | |
} | |
// b.js | |
person.say() // xm |
取值
有 for 办法能够获取到那个值
const s1 = Symbol.for('foo') | |
const s2 = Symbol.for('foo') | |
console.log(s1 === s2) // true | |
// 须要留神的是,那个 for 对应的是字符串,所以 true 和 'true' 的成果是一样的 | |
console.log(Symbol.for(true) === Symbol.for('true')) // true |
- JS 八种数据类型:Number、String、Boolean、Null、undefined、object、symbol、bigInt
- JS 七种根本数据类型:Number、String、Boolean、Null、undefined、symbol、bigInt
ES6-ES10 学习幅员
正文完
发表至: javascript
2020-11-12