Symbol基本用法

105 阅读1分钟

作用

解决命名冲突

概述

1、一种新的原始数据类型symbol
2、表示独一无二的值

使用

1、let s = Symbol('abc');
2、let s1 = Symbol.for('abc');

Symbol和Symbol.for区别:

   // 没有参数的情况
    	let s1 = Symbol();
      	let s2 = Symbol();

      	s1 === s2 // false

   // 有参数的情况
        let s1 = Symbol('foo');
        let s2 = Symbol('foo');

        s1 === s2 // false
   
   //Symbol.for
    let s1 = Symbol.for('foo');
    let s2 = Symbol.for('foo');

    s1 === s2 // true

取值

let o = Symbol.for('abc')
let obj1 = {
	abc:'111',
    [o]:'222'
}
1Object.getOwnPropertySymbols(obj1) //只能拿到symbol,返回一个数组返回值[Symbol(abc)]
2Reflect.ownKeys(obj1) //返回值["abc",Symbol(abc)]