全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ES6新特性之Symbol类型用法分析

本文实例讲述了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小时内与您取得联系。