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);