Symbol

防止属性名冲突,ES5 的对象属性名都是字符串,这容易造成属性名的冲突。

Symbol跟undefinednull、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)同属于基本数据类型.

1.symbol的创建和验证

        let a = Symbol();
        console.log(typeof(a));

 Symbol

 typeof运算的结果显示a属于symbol类型.

 2.description提取symbol的描述 

        let sym1 = Symbol('abc')
        let sym2 = Symbol('abc')
        console.log(sym1.description,sym2);

 abc  Symbol(abc)

 

3.symbol函数的参数值相等时但返回值不相等

        let a = Symbol();
        let b = Symbol();

        console.log(a==b);
        console.log(a===b);


        let c = Symbol('sym');
        let d = Symbol('sym');
        
        console.log(c==d);
        console.log(c===d);

false

false

false

false

4.symbol函数不能被当作构造函数使用

const a = new Symbol();
        console.log(a);//报错

Symbol is not a constructor 

 

 5.Symbol 值不能与其他类型的值进行运算,会报错(Symbol值的产生主要是为了解决对象的属性名冲突问题)

        let a = Symbol(10);
        console.log(a+10);//报错

 

 Cannot convert a Symbol value to a number

 6.Symbol值具有toString方法的,但undefined不能toString,因为undefined不具有包装对象.

        let s8 = Symbol()
        let s9 = Symbol('abcd');
        console.log(s8.toString(), s9.toString());

 Symbol()      Symbol(abcd)

7.可以用Symbol.for方法创建同一个symbol

 

const a = Symbol.for('hi'), b = Symbol.for('hi');
        console.log(a == b,a === b); 

 true   true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值