ES6_07_Symbol属性

Symbol属性:

前言:ES5中对象的属性名都是字符串,容易造成重名,污染环境 Symbol:
概念:ES6中的添加了一种原始数据类型symbol(已有的原始数据类型:String, Number, boolean, null, undefined, 对象)
特点:
1、Symbol属性值对应的值是唯一的,解决命名冲突问题
2、Symbol值不能与其他数据进行计算,包括同字符串拼串
3、for in, for of遍历时不会遍历symbol属性。
使用:
1、调用Symbol函数得到symbol值

let symbol = Symbol();
let obj = {};
obj[symbol] = 'hello';

 


2、传参标识

let symbol = Symbol('one');
let symbol2 = Symbol('two');
console.log(symbol);// Symbol('one')
console.log(symbol2);// Symbol('two')

 


3、内置Symbol值
* 除了定义自己使用的Symbol值以外,ES6还提供了11个内置的Symbol值,指向语言内部使用的方法。
- Symbol.iterator
* 对象的Symbol.iterator属性,指向该对象的默认遍历器方法(后边讲)

举例:

 //创建symbol属性值
    let symbol = Symbol();
    console.log(symbol);
    let obj = {username:'kobe', age:39};
    obj[symbol] = 'hello';
    console.log(obj);
    //for in ,for of不能遍历symbol属性
    for(let i in obj){
        console.log(i);
    }


    let symbol2 = Symbol('one');
    let symbol3 = Symbol('two');
    console.log(symbol2 == symbol3);
    console.log(symbol2, symbol3);

    //可以去定义常量
    const Person_key = Symbol('person_key');
    console.log(Person_key);

 

posted @ 2019-07-08 09:22  sunjiaojiao  阅读(249)  评论(0编辑  收藏  举报