前言:
我们知道es5之前共有5种数据类型,分别是:undefined,null,string,boolean,number;
但在es6中新增了一种Smybol数据类型,它是一种类似于字符串的数据类型,用来保证每个属性的名字都是独一无二的.
1.声明方法如下:
let s =Symbol();
console.log(typeof s);//symbol类型
注意点:不用new关键字;
2.Symbol函数可以接受一个字符串作为参数
let s1=Symbol("foo")
console.log(s1);//Symbol(foo)
console.log(s1.toString());//"Symbol(foo)"
3.对Symbol了解而已,但是自己没有用到.
具体文档可以参考文档:https://www.cnblogs.com/sker/p/5474591.html
http://es6.ruanyifeng.com/#docs/symbol
// Symbol:代表独一无二的值
{
// 声明
let a1 = Symbol();
let a2 = Symbol();
console.log(a1 === a2);//false
//声明同一个Symbol的方法,使用for方法,里面加一个字符串
let a3 = Symbol.for('a3');
let a4 = Symbol.for('a3');
console.log(a3 === a4);//true
}
//用法:常用在对象的属性上
{
let a1 = Symbol.for('abc');
let obj = {
[a1]: '123',//方括号是动态绑定
'abc': 345,
'c': 456
};
console.log(obj);//{ abc: 345, c: 456, [Symbol(abc)]: '123' }
//Object.entries(obj)方法返回键值对的数组,如Object.entries({ foo: 'bar', baz: 42 }); 输出 [ ['foo', 'bar'], ['baz', 42] ]
for (let [key, value] of Object.entries(obj)) {
console.log('let of', key, value);
//abc 345
//c 456
}
console.log(Object.getOwnPropertySymbols(obj));//[ Symbol(abc) ]
Object.getOwnPropertySymbols(obj).forEach(function (item) {
console.log(obj[item]);//123
})
console.log( Reflect.ownKeys(obj));// Reflect.ownKeys(obj)
Reflect.ownKeys(obj).forEach(function (item) {
console.log('ownkeys', item, obj[item]);
//abc 345
//c 456
// Symbol(abc) 123
})
}
```js
版权声明:本文为xiaodi520520原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。