ES6新特性之Symbol类型用法分析
发布时间 - 2026-01-11 00:27:43 点击率:次本文实例讲述了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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么上传文件_Laravel图片上传及存储配置
网站建设要注意的标准 促进网站用户好感度!
微信小程序 canvas开发实例及注意事项
深入理解Android中的xmlns:tools属性
如何在腾讯云免费申请建站?
Bootstrap整体框架之JavaScript插件架构
如何打造高效商业网站?建站目的决定转化率
如何在自有机房高效搭建专业网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何解决hover在ie6中的兼容性问题
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
php json中文编码为null的解决办法
教你用AI将一段旋律扩展成一首完整的曲子
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
Laravel安装步骤详细教程_Laravel环境搭建指南
JS去除重复并统计数量的实现方法
如何快速辨别茅台真假?关键步骤解析
网站页面设计需要考虑到这些问题
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
如何在景安云服务器上绑定域名并配置虚拟主机?
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
C++时间戳转换成日期时间的步骤和示例代码
如何在新浪SAE免费搭建个人博客?
详解CentOS6.5 安装 MySQL5.1.71的方法
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
java中使用zxing批量生成二维码立牌
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
如何安全更换建站之星模板并保留数据?
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何撰写建站申请书?关键要点有哪些?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
WEB开发之注册页面验证码倒计时代码的实现
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何用西部建站助手快速创建专业网站?
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel如何处理和验证JSON类型的数据库字段
如何彻底卸载建站之星软件?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南

