JS每日一题:Es6中新增的数据类型有哪些?使用场景?

栏目: JavaScript · 发布时间: 5年前

内容简介:Es6中新增的数据类型有哪些?使用场景?es6中新增一种原始数据类型Symbol,最大的特点是唯一性,Symbol值通过Symbol函数生成, 在es5中对象的属性都是字符串,我们使用他人定义的对象,然后去新增自己的属性,这样容易起冲突覆盖原有的属性, Symbol也可以看成为一个字符串,不过这个字符能保证是独一无二的基本示例:

20190125问:

Es6中新增的数据类型有哪些?使用场景?

es6中新增一种原始数据类型Symbol,最大的特点是唯一性,Symbol值通过Symbol函数生成, 在es5中对象的属性都是字符串,我们使用他人定义的对象,然后去新增自己的属性,这样容易起冲突覆盖原有的属性, Symbol也可以看成为一个字符串,不过这个字符能保证是独一无二的

基本示例:

// Object

const obj = {
    name: 'JS'
}

obj.name = 'JS每日一题' 

// Symbol

const name = Symbol('name') // 这里的参数没有特殊意义,可以看成为Symbol加了一个标记

obj[name] = 'JS每日一题'

Symbol用法

Symbol 目前有多种写法

// 一
const title = Symbol()

const obj = {}
obj[title] = 'JS每日一题'

// 二
const obj = {
    [title]: 'JS每日一题'
}

// 三
Object.defineProperty(obj, title, { value: 'JS每日一题'})


obj[title] // 输出的结果都为JS每日一题

这里注意一下,Symbol 做为属性名时,不能用点去读取

obj.title // undefined

Symbol作为属性名,只有通过Object.getOwnPropertySymbols 方法返回

const attrs = Object.getOwnPropertySymbols(obj)

// [Symbol[title]]

Symbol.for()

如果我们想要重复Symbol可以使用Symbol.for, Smybol.for()及Smybol()的区别在于Symbol.for()会先去查找全局下有没有声明过,如果有就返回该值,没有就新建一个,Symbol()每一次调用都会新建一个

代码理解:

const title = Symbol.for('JS每日一题') 

....Symbol.for('JS每日一题') //调用多次都是使用的第一次声明的值

Symbol.for('JS每日一题')  === Symbol.for('JS每日一题')  // true

const title = Symbol('JS每日一题')

Symbol('JS每日一题') === Symbol('JS每日一题') // false

总结

Symbol的特点

  • 独一无二
  • 不能隐式转换
  • 不能与其它数据类型做运算
  • 不能使用点运算符进行操作

ps: 今天答题的小伙伴多次都提到了map,set,,补充一下,新增的数据类型只有Symbol一种,map,set是新增的数据结构 ~_~

关于JS每日一题

JS每日一题可以看成是一个语音答题社区

每天利用碎片时间采用60秒内的语音形式来完成当天的考题

群主在次日0点推送当天的参考答案

  • 注 绝不仅限于完成当天任务,更多是查漏补缺,学习群内其它同学优秀的答题思路

点击加入答题


以上所述就是小编给大家介绍的《JS每日一题:Es6中新增的数据类型有哪些?使用场景?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Essential ActionScript 3.0

Essential ActionScript 3.0

Colin Moock / Adobe Dev Library / June 22, 2007 / $34.64

ActionScript 3.0 is a huge upgrade to Flash's programming language. The enhancements to ActionScript's performance, feature set, ease of use, cleanliness, and sophistication are considerable. Essentia......一起来看看 《Essential ActionScript 3.0》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具