开发者可以通过Babel将ES6代码转译为ES5代码来实现兼容
ES6引入了一种新的原始数据类型Symbol,表示 独一无二的值.他是jacascript语言的第七种数据类型,前六种是undefined.null,Boolean,String,Number,Object
直接调用Symbol函数即可生成一个Symbol函数.(注意:Symbol函数前不能使用new命令,不然会报错)
函数可以接受一个字符串作为参数,表示对Symbol的描述,主要是为了在控制动态显示.或者转为字符串时,比较容易区分
let s1 = Symbol('foo'); let s2 = Symbol('aabb'); s1 // Symbol(foo) s2 // Symbol(aabb) // Symbol的参数只是表示对当前Symbol值的描述,因此相同参数的Symbol函数的返回值是不相等的
用法:
Symbol作为属性
Symbol值可以作为标识符,用于对象的属性名,由于每一个Symbol值都是不相等的,这意味着就能保证不会出现同名的属性
注意: 在对象的内部,使用Symbol值定义属性时,Symbol值必须放在方括号中
let mySymbol = Symbol(); // 第一种写法 let a = {}; a[mySymbol] = 'hello word'; // 第二种写法 let a = { [mySymbol]: 'hello word'; } // 第三种写法 let a = {}; Object.defineProperty(a, mySymbol, { value: 'Hello word' }); 以上写法 console.log(a[mySymbol]) 的结果都是 'hello word'
Symbol的属性值 不能在 for in ~ for of ~ 循环中,也不会被Object.keys(), Object.getownpropertyNames(), JSON.stringify()返回.
但是 Object.getownPropertySymbols() 方法可以获取指定对象的所有Symbol属性名
Symbol.for('定义的名称'')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。