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>