【es6】symbol
来源:互联网 发布:win10笔记本电脑优化 编辑:程序博客网 时间:2024/06/05 07:07
javascript数据类型:
undefined、null、boolean、string、number、object、symbol
概述:
- symbol 表示独一无二的值
- Symbol函数前不能使用new命令,会报错。生成的Symbol是一个原始类型的值,不是对象
- Symbol类型定义 var s1 = Symbol(‘foo’) 如果参数是一个对象的话,会调用对象的toString方法,将其转为字符串,然后才生成一个 Symbol 值
- 相同参数的Symbol函数返回值不相等
- 不可与其他类型的值进行运算
- Symbol值可以显式转化为字符串 ‘Symbol(My symbol)’
- 可转化为布尔值,不能转为数值
var sym = Symbol(); if(sym) {} //可执行 Boolean(sym) //true !sym //false Number(sym) //TypeError
属性名
- 作为属性名可保证唯一性(公开属性)
- Symbol值作为对象属性名时,不能用点运算符,因为点运算符后面总是字符串
- 在对象的内部,使用Symbol值定义属性时,Symbol值必须放在方括号之中
let s = Symbol(); let obj = { [s](arg) { ... } }; obj[s](1,2,3)
- 可用在switch语句中保证按照设计方式工作
属性名遍历
- Object.getOwnPropertySymbols方法返回,对象的所有Symbol值用作属性名的数组(其他方法无法遍历Symbol属性)
- Reflect.ownKeys方法可以返回所有类型的键名
- 该属性不会被常规方法遍历到,所以可以为对象定义非私有但希望只用于内部的方法
Symbol.for(),Symbol.keyFor()
1 Symbol.for()搜索某一参数命名的Symbol值,为Symbol值登记的名字
2 Symbol.keyFor方法返回一个已登记的 Symbol 类型值的key。
var s1 = Symbol.for("foo"); Symbol.keyFor(s1) // "foo"(已登记) var s2 = Symbol("foo"); Symbol.keyFor(s2) // undefined(未登记)
内置Symbol值
- Symbol.hasInstance
对象使用instanceof运算符时调用 - Symbol.isConcatSpreadable
决定对象使用Array.prototype.concat()时,是否可以展开 - Symbol.species
- Symbol.match
- Symbol.replace
- Symbol.search
- Symbol.search
- Symbol.iterator 指向对象的默认遍历器方法
- Symbol.toPrimitive 对象被转为原始类型时调用,返回原始类型值
- Symbol.toStringTag
- Symbol.unscopables
补充
Object.defineProperty:定义新属性或修改原有的属性
Object.defineProperty(obj,"newKey",{ configurable:true | false, //是否可删除/修改目标 enumerable:true | false, //枚举 value:任意类型的值, //属性值 writable:true | false //重写 });
阅读全文
0 0
- ES6--Symbol
- ES6 symbol
- 【ES6】symbol
- es6-symbol
- ES6--symbol
- 【es6】symbol
- es6->Symbol
- ES6详解五:Symbol
- ES6-Symbol类型
- 自学-ES6篇-Symbol
- ES6里symbol
- es6 javascript Symbol数据类型
- ES6 Symbol 学习
- ES6之路--Symbol
- es6 中的symbol
- ES6(九)Symbol
- ES6新数据类型 Symbol
- es6 Symbol(八)
- 数据结构(四)排序算法(一)冒泡,插入,希尔排序
- Tess4J OCR简单使用教程
- 在windows10上安装ubuntu并搭建java运行环境
- 代理设计模式之静态代理与动态代理(超..)详解
- nodejs express服务器搭建和使用教程
- 【es6】symbol
- 七牛云存储的 Javascript Web 前端文件上传
- 模拟题 动态规划
- POJ1915BFS
- shell内置测试判断
- Mysql innodb 间隙锁: 记录不存在也会加间隙锁
- [2602]Bone Collector(0-1背包问题)
- shell内置测试判断
- 进程通信1——管道、命名管道