Julia's BLOG

es6中Symbol作用

2019-03-22

1. Symbol

symbol是es6出的一种类型,他也是属于原始类型的范畴(string,
number, boolean, null, undefined, symbol)

1
2
3
4
5
let name = Symbol('xiaohesong')
typeof name // 'symbol'
let obj = {}
obj[name] = 'xhs'
console.log(obj[name]) //xhs

2. Symbol for

1
2
3
4
5
6
7
8
9
10
11
12
13
let uid = Symbol.for("uid");
let object = {
[uid]: "12345"
};

console.log(object[uid]); // "12345"
console.log(uid); // "Symbol(uid)"

let uid2 = Symbol.for("uid");

console.log(uid === uid2); // true
console.log(object[uid2]); // "12345"
console.log(uid2);

3. Symbol keyfor

1
2
3
4
5
6
7
8
let uid = Symbol.for("uid");
console.log(Symbol.keyFor(uid)); // "uid"

let uid2 = Symbol.for("uid");//
console.log(Symbol.keyFor(uid2)); // "uid"

let uid3 = Symbol("uid");
console.log(Symbol.keyFor(uid3)); // undefined

全局注册表不存在uid3这个共享的symbol.所以取不出对应的key.由此可见,这个是获取对应的key.

4. Symbol 在对象中的作用

1
2
3
4
5
6
7
8
9
10
let obj = {
name:'name',
gender:'male'
}
let age = Symbol();
obj[age] = 6;
for(let item in obj) {
console.log(obj[item]);
}
console.log(obj);

输出:

1
2
3
name
male
{ name: 'name', gender: 'male', [Symbol()]: 6 }

结论:symbol 保护数据 遍历的时候不输出

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章