ES6-symbol-创建symbol
ES6-symbol-创建symbol
// 1. ES 6 为引入 Symbol 类型?// 为了确保每个属性的名称都是独一无二的,从根本上防止属性名的冲突。// 引入 Symbol 类型之后,对象的属性名就有了两种类型,一种是 String 类型的数据,另一种就是 Symbol 类型的数据// 2. 怎样创建 Symbol 类型的数据呢?// 其他 5 种原始类型都有各自的字面量形式,而 Symbol 没有字面量形式,但是可以通过全局的 Symbol 函数创建一个 Symbol 类型的数据。let firstName = Symbol();let lastName = Symbol();let obj = {};obj[firstName] = '李金健';console.log(obj)console.log(obj[firstName])console.log(obj[lastName])// 上面的代码创建了一个名为 firstName 的 Symbol,用它作为 obj 对象的属性名,并为属性复制为 '李金健',// 每当你想访问这个属性时一定要使用最初定义的 Symbol。// 例如 obj[firstName] 可以访问到之前添加的属性值,而使用另外一个 Symbol 类型的值 lastName 就不能访问。// 也就是说,你定义属性时使用的是哪个 Symbol,访问属性时也要使用使用哪个 Symbol。// 3. Symbol 函数接收一个可选参数,它可以让你添加一段文本,描述即将创建的 Symbol,方便我们进行阅读和调试。let firstName = Symbol('This is my first name');let obj = {};obj[firstName] = '刘逸云';console.log(obj[firstName])console.log(firstName)// 4. 我们可以使用 typeof 操作符检测变量的值是否为 Symbol 类型。let firstName = Symbol('This is my first name');console.log(typeof firstName); // 'symbol'// 5. Symbol 的使用场景// 所有用到可计算属性名的地方,都可以用 Symbol。例如:// 1> 对象字面量的可计算属性名中let firstName = Symbol('This is my first name');let obj = {[firstName]: '王亚坡'};// 2> 在 Object.defineProperty() 方法中使用let lastName = Symbol('This is my last name')Object.defineProperty(obj, lastName, { value: '尼古拉斯' });// 3> 在 Object.defineProperties() 方法中使用let firstName = Symbol('This is my first name');let lastName = Symbol('This is my last name');let obj = {};Object.defineProperties(obj, {[firstName]: {value: '王亚坡',writable: false },[lastName]: {value: '尼古拉斯',writable: false }})console.log(obj[firstName])console.log(obj[lastName])console.log(obj)
ES6-symbol-创建symbol相关推荐
- 【es6】教程 Symbol数据以及迭代器和生成器
[es6]学习 知识点1,Symbol的介绍与创建 知识点2,向对象添Symbol类型的属性 知识点3,迭代器,Iterator 知识点4,生成器-函数 生成器函数的参数传递 生成器函数实例 生成器函 ...
- ES6入门之Symbol
ES5对象属性名都是字符串容易造成属性名的冲突. eg:var a = { name: 'lucy'};a.name = 'lili';这样就会重写属性 ES6引入了一种新的原始数据类型Symbol, ...
- android log 如何获取double类型后小数点的值_【ES6基础】Symbol介绍:独一无二的值...
开篇 ES6之前我们都清楚JS有六种数据类型:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object),今天笔者讲的Symbol类型是 ...
- ES6 中的 Symbol 是什么?
前言 记得刚找工作那会,几种数据类型是必问题,当时的答案一般都是七种--字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null). ...
- ES6 Symbol类型的应用、symbol属性名的遍历、Symbol.for()Symbol.keyFor()
目录 Symbol类型 介绍 Symbol.prototype.description Symbol的应用 1 给对象内追加属性 2 消除魔术字符串 symbol属性名的遍历 Symbol.for() ...
- JavaScript基础: ES6新特性---Symbol
简介 在ES6中引入的一种新的基本数据类型Symbol.这个类型不像是number或者String让人使用起来那样顺手好理解,为什么是这样呢?是不是因为其是新特性,所以不熟是正常的? 自然不是因为箭头 ...
- 【ES6基础】Symbol介绍:独一无二的值
开篇 ES6之前我们都清楚JS有六种数据类型:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object),今天笔者讲的Symbol类型是 ...
- 【ES6(2015)】Symbol
文章目录 1. 声明方式 2. Symbol.for() 3. Symbol.keyFor() 4. 作为属性名 5. 属性遍历 6. 消除魔术字符串 ES6 引入了一种新的原始数据类型 Symbol ...
- ES6 里的symbol
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- ADS(Advanced Design system)创建Symbol并放置
前言 先进设计系统 Advanced Design system(ADS)Agilent Technologies 是领先的电子设计自动化软件,适用于射频.微波和信号完整性应用. 在很多时候,我们设计 ...
最新文章
- 搭建测试环境属于软件文档,搭建软件测试环境应注意的几个问题
- mysql不使用自增_自增ID有什么坏处?什么样的场景下不使用自增ID?
- Elasticsearch-04 ES中的术语和基本用法
- 国籍 mysql_国籍表SQL,按首字母升序排序
- 菜鸟涂鸦作品展_No.1
- java学习class5
- asp.net 微信小程序源码 微信分销源码 源文件完全开源 源码
- Win10为什么电脑没有本地组策略编辑器
- 北方工业大学计算机科学与技术复试分数线,北方工业大学计算机学院 2016 年硕士生复试结果.pdf...
- C语言实现2048游戏(分文件编译)
- java随机生成迷宫游戏地图_java随机生成迷宫(图的深度优先遍历)
- strtok()函数详解!
- Altium Designer--如何将底层视图进行翻转
- 计算机专业大学期间有必要参加很多竞赛吗?
- linux rsync文件夹增量同步
- js前端通过身份证号判断年龄、性别、出生日期。
- 计算机主板i3 i5区别,装机那些事儿之挑选适合自己的CPU;i3/i5/i7的区别
- 计算机编码与解码编码表
- SimpleFOC vs code + PlatformIO环境搭建
- 焦点对话AMA:Cirus如何重新定义所有权经济 用数据释放时代价值
热门文章
- heartbeat+iscsi+mysql实现双机高可用
- 回顾Spirng ioc 控制反转
- 精准高效估计多人3D姿态,美图北航分布感知式单阶段模型(CVPR 2022)
- 完美替代Mask RCNN!BlendMask:实例分割新标杆
- 中文场景文字识别技术创新大赛,总奖池5.4万!
- 零基础程序员如何快速学会python
- vue中this.init用法_Vue中的this.$options.data()和this.$data用法说明
- CVPR | 基于LiDAR的3D物体检测新框架
- 图像分类最新技术综述论文: 21种半监督、自监督和无监督学习方法一较高低
- linux on win原理,linux on win10 上手体验