Symbol

原创 小Q 随笔 ES6 33阅读 7 天前 举报

es5 null undefined number boolean string obj
es6 Symbol

不能使用new
var a =Symbol(123)
var b=Symbol(123)
a与b不相等 //false
console.log(a) //Symbol(123)
a===a //true
只能等于自己
这样定义
Symbol的参数如果是对象,默认会把对象toString方法,转化为字符串,然后生成Symbol值,所以,Symbol的参数只能是字符串
Symbol值不可以进行运算
不可转化为数值
只能转成字符串和布尔值
在对象内部,使用symbol定义属性,symbol必须放在[]内,否则只是字符串
例如:

目的:解决对象的属性名

专门获取symbol属性名

obj.getOwnPropertySymbols()获取一个对象上的symbol属性名
,也可以用Reflect.ownKeys()返回所有类型的属性名,包括常规属性名和Symbol属性名

Symbol.for()和Symbol.keyFor()
keyfor用来查找for生成值,返回for里面的描述值,即‘1’
console.log(Symbol.keyFor(s1));

ES6提供了symbol内置的11个函数

symbol用处:解决对象属性名冲突的问题

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复