ES6——数据类型之 (Symbol)

Symbol是ES6的新的一种基本数据类型是一种类似于字符串的数据类型

目录

特点

不能与其他的数据进行比较以及运算(唯一性)

隐藏性,for···in不能访问

Symbol()函数会返回Symbol类型的值,该类型具有静态属性和静态方法。

每个从Symbol()返回的Symbol值都是唯一的。一个Symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。

其特点:

1、Symbol的值是唯一的,用来解决命名冲突的问题

2、Symbol值不能与其他数据进行运算

3、Symbol定义的对象属性不能使用for..in进行循环遍,但是可以使用Reflect.ownKeys来获取对象的所有键名

特点

不能与其他的数据进行比较以及运算(唯一性)

不能比较

例如:

<script>
    let a1 = Symbol('11');
    let a2 = Symbol('11');
    console.log(a1===a2);    //    flase
</script>

效果如下:

 如果需要比较即可在后面加上for

<script>
        let a1 = Symbol('11');
        let a2 = Symbol('11');
        console.log(a1===a2);        //flase
        let b1 = Symbol.for('22');    //这里加for
        let b2 = Symbol.for('22');
        console.log(b1===b2);        //true
    </script>

效果如下:

 不能与其他数据进行运算

例如:

let result = a2 + 100;     //报错
let result = a2 > 100;    //报错
let result = a1 + a1;    //报错

隐藏性,for···in不能访问

例如:

let a = Symbol('Nan');
        let obj = {
            [a]:'Chen'
        };
        console.log(obj);    //{Symbol(Nan): "Chen"}
        for (const option in obj) {
            console.log(obj[option]);    //啥都没有
        }

效果:

 使用Object.getOwnPropertySymbols方法可以进行访问

<script>
        let a = Symbol('Nan');
        let obj = {
            [a]:'Chen'
        };
        console.log(obj);
        for (const option in obj) {
            console.log(obj[option]);
        }
        let array = Object.getOwnPropertySymbols(obj);
        console.log(array);        //[Symbol(Nan)]
        console.log(obj[array[0]]);    //Chen 
</script>

打印效果:

 再看个例子:

	let game = {
				up: 'upp',
				down: 'doown'
			}

			let methods = {
				up: Symbol(),
				down: Symbol(),

			}
			game[methods.up] = function(){
				  console.log('up up up')
			}
			game[methods.down] = function(){
				 console.log('down down down')
			}
			 console.log('game----', game)
			game[methods.up]()

打印效果: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Southern Wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值