ES6参考---Symbol属性
一、总结
一句话总结:
Symbol是ES6中的添加了一种原始数据类型symbol(已有的原始数据类型:String, Number, boolean, null, undefined, 对象),Symbol是唯一的,解决命名冲突问题
window.onload = function () {
let symbol = Symbol();
console.log(typeof symbol);
console.log(symbol);
// 用作对象的属性(唯一)
let obj = {username: 'kobe', age: 39};
obj[symbol] = 'hello';
obj[symbol] = 'symbol';
console.log(obj);
for(let i in obj){
console.log(i);
}
}
1、为什么会有Symbol?
ES5中对象的属性名都是字符串,容易造成重名,污染环境
2、Symbol的特点?
1、Symbol属性对应的值是唯一的,解决命名冲突问题
2、Symbol值不能与其他数据进行计算,包括同字符串拼串
3、for in, for of遍历时不会遍历symbol属性。
3、Symbol使用?
调用Symbol函数得到symbol值:let symbol = Symbol();obj[symbol] = 'hello';
let symbol = Symbol();
let obj = {};
obj[symbol] = 'hello';
二、Symbol属性
博客对应课程的视频位置:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Symbol</title> 6 </head> 7 <body> 8 <!-- 9 前言:ES5中对象的属性名都是字符串,容易造成重名,污染环境 10 Symbol: 11 概念:ES6中的添加了一种原始数据类型symbol(已有的原始数据类型:String, Number, boolean, null, undefined, 对象) 12 特点: 13 1、Symbol属性对应的值是唯一的,解决命名冲突问题 14 2、Symbol值不能与其他数据进行计算,包括同字符串拼串 15 3、for in, for of遍历时不会遍历symbol属性。 16 使用: 17 1、调用Symbol函数得到symbol值 18 let symbol = Symbol(); 19 let obj = {}; 20 obj[symbol] = 'hello'; 21 2、传参标识 22 let symbol = Symbol('one'); 23 let symbol2 = Symbol('two'); 24 console.log(symbol);// Symbol('one') 25 console.log(symbol2);// Symbol('two') 26 3、内置Symbol值 27 * 除了定义自己使用的Symbol值以外,ES6还提供了11个内置的Symbol值,指向语言内部使用的方法。 28 - Symbol.iterator 29 * 对象的Symbol.iterator属性,指向该对象的默认遍历器方法(后边讲) 30 31 --> 32 33 34 <script type="text/javascript"> 35 window.onload = function () { 36 let symbol = Symbol(); 37 console.log(typeof symbol); 38 console.log(symbol); 39 40 // 用作对象的属性(唯一) 41 let obj = {username: 'kobe', age: 39}; 42 obj[symbol] = 'hello'; 43 obj[symbol] = 'symbol'; 44 console.log(obj); 45 for(let i in obj){ 46 console.log(i); 47 } 48 } 49 </script> 50 51 </body> 52 </html>