1.symbol的概念
1.symbol是es6中新增的一種資料型別, 被劃分到了基本資料型別中.
基本資料型別: 字串、數值、布林、undefined、null、symbol
引用資料型別: object
2.symbol的作用
用來表示乙個獨一無二的值
3.如果生成乙個獨一無二的值?
let *** = symbol();
4.為什麼需要symbol?
在企業開發中如果需要對一些第三方的外掛程式、框架進行自定義的時候可能會因為新增了同名的屬性或者方法, 將框架中原有的屬性或者方法覆蓋掉,為了避免這種情況的發生, 框架的作者或者我們就可以使用symbol作為屬性或者方法的名稱
5.如何區分symbol?
在通過symbol生成獨一無二的值時可以設定乙個標記,這個標記僅僅用於區分, 沒有其它任何含義。
eg: let name = symbol(「name」);
"name"此時為變數name的標記。
**
let name = symbol("name");
let say = symbol("say");
let obj =
} // obj.name = "b";
obj[symbol("name")] = "b";
console.log(obj);
列印結果:symbol(name): "a"
symbol(name): "b"
symbol(say): ƒ ()
__proto__: object
6.注意點
通過symbol生成獨一無二值時需要在後面加上(), 但是前面不能加new, 因為它不是引用型別。
通過symbol生成獨一無二值時傳入的字串僅僅是乙個標記, 方便我們閱讀**, 沒有其它任何意義。
做型別轉換的時候不能轉換成數值,不能做任何運算
symbol生成的值作為屬性或方法名稱時, 一定更要儲存下來, 否則後續無法使用。
for迴圈無法遍歷出symbol的屬性和方法
遍歷取出的方法:
let name = symbol("name");
let say = symbol("say");
let obj = ,
age: 18,
gender: "woman",
hi: function ()
}//將obj中的所有symbol型別的屬性與方法都放到陣列中返回,可通過遍歷陣列取出
console.log(object.getownpropertysymbols(obj));
列印結果:array(2)
0: symbol(name)
1: symbol(say)
length: 2
__proto__: array(0)
3 3ES6 7 8新特性之Generator函式
1.概念 generator 函式是 es6 提供的一種非同步程式設計解決方案 generator 函式內部可以封裝多個狀態,因此又可以理解為是乙個狀態機。2.定義 generator 函式 在普通函式的function後面加上 即可 eg function gen 3.generator函式和普通...
ES6 7 8常用新特性總結 超實用
let 命令也用於變數宣告,但是作用域為區域性 在函式外部可以獲取到b,獲取不到a,因此例如for迴圈計數器就適合使用let。const用於宣告乙個常量,設定後值不會再改變 const pi 3.1415 pi 3.1415 pi 3 typeerror assignment to constant...
ES6 新特性之Symbol
symbol let s1 symbol foo let s2 symbol bar s1 symbol foo s2 symbol bar s1.tostring symbol foo s2.tostring symbol bar es6 引入了一種新的原始資料型別symbol,表示獨一無二的值。...