云笔记
生活
美食养生
求职招聘
新闻
时光记忆
恋恋爱
科技
电脑
手机
其他
文化
读书
历史
心得
艺术
汽车
旅游娱乐
NBA
自驾游
徒步骑行
明星八卦
旅了个游
搞笑
游记攻略
美景分享
随手拍
城市风光
英语
英语家园
英语学习
每日一句
夜读听书
搜索
快捷导航
登录
注册
ဆ
热搜词
活动
交友
discuz
本版
文章
帖子
用户
科技
+关注
+发表新主题
面试官:ES6中为什么要使用Symbol?
[复制链接]
作者:
zhaoyuac09
|
时间: 2022-6-24 01:19:56
|
其他
|
0
40
zhaoyuac09
当前离线
积分
2241
窥视卡
雷达卡
zhaoyuac09
747
主题
747
帖子
2241
积分
高中生
高中生, 积分 2241, 距离下一级还需 759 积分
高中生, 积分 2241, 距离下一级还需 759 积分
积分
2241
发消息
发表于 2022-6-24 01:19:56
|
显示全部楼层
|
阅读模式
ES6中为什么要使用Symbol?
1、简述ES6中Symbol的概念
ES6中已经有6种数据类型:
Undefined
Null
布尔值
字符串
数值
对象
但是在ES6种新加入一种新的数据类型Symbol。
Symbol表示独一无二的值。
需要说明一下:这里的字符'saucxs'是该Symbol的一个描述,但是并非两个参数都是'saucxs'。
2、简述Symbol的特性
特性1:Symbol 值通过 Symbol 函数生成,使用 typeof,结果为 "symbol"
特性2:Symbol 函数前不能使用 new 命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。
特性3:instanceof 的结果为 false
特性4:Symbol 函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。
特性5:如果 Symbol 的参数是一个对象,就会调用该对象的 toString 方法,将其转为字符串,然后才生成一个 Symbol 值。
特性6:Symbol 函数的参数只是表示对当前 Symbol 值的描述,相同参数的 Symbol 函数的返回值是不相等的。
特性7:Symbol 值不能与其他类型的值进行运算,会报错。
特性8:Symbol 值可以显式转为字符串。
特性9:Symbol 值可以作为标识符,用于对象的属性名,可以保证不会出现同名的属性。
特性10:Symbol 作为属性名,该属性不会出现在 for...in、for...of 循环中,也不会被 Object.keys()、Object.getOwnPropertyNames()、JSON.stringify() 返回。但是,它也不是私有属性,有一个 Object.getOwnPropertySymbols 方法,可以获取指定对象的所有 Symbol 属性名。
特性11:使用同一个 Symbol 值,可以使用 Symbol.for。它接受一个字符串作为参数,然后搜索有没有以该参数作为名称的 Symbol 值。如果有,就返回这个 Symbol 值,否则就新建并返回一个以该字符串为名称的 Symbol 值。
特性12: Symbol.keyFor 方法返回一个已登记的 Symbol 类型值的 key。
3、为什么要使用Symbol?
比如有这样一种场景,我们想区分两个属性,其实我们并不在意,这两个属性值究竟是什么,我们在意的是,这两个属性绝对要区分开来! 例如:
这个时候,我们仅仅是想区分各种形状,因为不同的形状用不同的计算面积的公式。 这里使用的是triangle的名字叫做‘Triangle’,而是事实上我们不想对triangle去特地取个名,我们只想要区分triangle这个形状不同于任何其他形状,那么这个时候Symbol就派上用场啦!
也就是说,我们不用非要去给变量赋一个字符串的值,去区分它和别的变量的值不同,因为去给每个变量取个语义化而又不同的值是一件伤脑子的事,当我们只需要知道每个变量的值都是百分百不同的即可,这时候我们就可以用Symbol。
还有可以运用在类的私有变量和私有方法中。
福利
需要更多前端资料,面试资料的私信发送面试获取
来源:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
回复
楼主新帖
著名音乐制作人Timbaland让他的无聊猿Congo出道了
英国陆军社交媒体账户被黑 为NFT做起广告
长沙涉外旅游职业中专学校计算机应用(工业机器人方向)培养目标
Meta下调工程师招聘数量 准备迎接精简的下半年;郭明錤认为苹果 iPhone
变译的12种变通手段
24小时热门
更多>
快速回复
返回列表
返回顶部