本文实例讲述了ES6新特性之Symbol类型用法。分享给大家供大家参考,具体如下:

Symbol类型
1. 为了避免属性名的冲突,ES6新增了Symbol类型。Symbol可以产生一个独一无二的值。
let s1 = Symbol('a');
let s2 = Symbol('a');
console.log(s1); //Symbol(a)
console.log(typeof s1); //symbol
console.log(s1 == s2); //false
2.Symbol用于属性名。
var s1 = Symbol();
var s2 = Symbol();
var s3 = Symbol();
var obj = {
[s1]: 'hi'
};
obj[s2] = 'ES6';
Object.defineProperty(obj, s3, {
value: 'ES2015'
});
console.log(obj); //Object {Symbol(): "hi", Symbol(): "ES6", Symbol(): "ES2015"}
console.log(obj.s1); //undefined -> 所以当用Symbol作为属性名时候,不能用.运算符访问属性
console.log(obj[s1]); //hi
console.log(obj['s1']); //undefined
注意:Symbol作为属性名,该属性不会出现在 for...in...和 for...of... 循环中,也不会被 Object.keys(), Object.getOwnPropertyNames() 返回。Object.getOwnProertySymbols()返回一个数组,成员是当前对象的所有用作属性名的symbol值。
2. Symbol.for() 接受一个字符串作为参数,然后搜索有没有以该参数作为名称的Symbol值,有就返回这个Symbol值,否则就新建并返回一个以该字符串为名称的Symbol值。
3. Symbol.keyFor()方法返回一个已经登记的Symbol类型值的key。
Symbol()方法生成一个Symbol类型时,没有登记,所以每次调用Symbol(哪怕传入相同的字符串)会返回不同的Symbol,但是Symbol.for()在生成Symbol时候进行了登记,每次再次调用时,都会先寻找是否有传入相同参数的Symbol,故只有Symbol.for()产生的Symbol才能被Symbol.keyFor()找到。
let s1 = Symbol('a');
let s2 = Symbol('a');
let s3 = Symbol.for('b');
let s4 = Symbol.for('b');
let name1 = Symbol.keyFor(s1);
let name3 = Symbol.keyFor(s3);
console.log(s1 == s2); //false
console.log(s1 == s3); //false
console.log(s2 == s3); //false
console.log(s3 == s4); //true
console.log(name1); //undefined
console.log(name3); //b
希望本文所述对大家ECMAScript程序设计有所帮助。
# ES6
# 新特性
# Symbol类型
# ES6中Symbol、Set和Map用法详解
# 详解ES6 Symbol 的用途
# Javascript ES6中数据类型Symbol的使用详解
# ES6中Symbol类型用法实例详解
# ES6概念 Symbol toString()方法
# ES6概念 Symbol.keyFor()方法
# ES6初步了解原始数据类型Symbol的用法
# 以该
# 出现在
# 给大家
# 不能用
# 为了避免
# 所述
# 程序设计
# 进行了
# 会先
# 无二
# 运算符
# 讲述了
# 新增了
# pre
# color
# class
# console
# brush
# js
相关文章:
湖北网站制作公司有哪些,湖北清能集团官网?
临沂网站制作企业,临沂第三中学官方网站?
建站主机类型有哪些?如何正确选型
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
XML的“混合内容”是什么 怎么用DTD或XSD定义
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
建站之星代理如何获取技术支持?
如何通过IIS搭建网站并配置访问权限?
如何通过万网虚拟主机快速搭建网站?
怎么将XML数据可视化 D3.js加载XML
如何确认建站备案号应放置的具体位置?
威客平台建站流程解析:高效搭建教程与设计优化方案
建站VPS推荐:2025年高性能服务器配置指南
制作网页的网站有哪些,电脑上怎么做网页?
*服务器网站为何频现安全漏洞?
建站主机CVM配置优化、SEO策略与性能提升指南
已有域名建站全流程解析:网站搭建步骤与建站工具选择
建站之星后台管理如何实现高效配置?
如何在阿里云高效完成企业建站全流程?
如何通过商城免费建站系统源码自定义网站主题?
制作营销网站公司,淘特是干什么用的?
教学论文网站制作软件有哪些,写论文用什么软件
?
如何通过商城自助建站源码实现零基础高效建站?
网站制作企业,网站的banner和导航栏是指什么?
山东网站制作公司有哪些,山东大源集团官网?
香港服务器如何优化才能显著提升网站加载速度?
高端网站建设与定制开发一站式解决方案 中企动力
如何在阿里云域名上完成建站全流程?
,怎么用自己头像做动态表情包?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
定制建站是什么?如何实现个性化需求?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
建站之星备案流程有哪些注意事项?
如何快速生成专业多端适配建站电话?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何通过主机屋免费建站教程十分钟搭建网站?
广州美橙建站如何快速搭建多端合一网站?
C#如何在一个XML文件中查找并替换文本内容
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
黑客如何利用漏洞与弱口令入侵网站服务器?
如何快速上传建站程序避免常见错误?
建站之星logo尺寸如何设置最合适?
如何快速登录WAP自助建站平台?
微信小程序 input输入框控件详解及实例(多种示例)
建站之星伪静态规则如何正确配置?
外贸公司网站制作哪家好,maersk船公司官网?
制作公司内部网站有哪些,内网如何建网站?
建站之星如何助力企业快速打造五合一网站?
如何将凡科建站内容保存为本地文件?
网站微信制作软件,如何制作微信链接?
*请认真填写需求信息,我们会在24小时内与您取得联系。