ES6 基礎(對象的賦值,Symbol)


  對象的賦值合並:

//es6語法允許變量直接為對象的賦值,快捷方便;

let liu="呵呵噠";

let long="賴皮噠";

let a={liu,long};

console.log(a) ;

//es6語法允許為對象構建key值;

let key='skill';

var obj={ [key]:'web'}
console.log(obj.skill);

//es6語法允許直接合並對象;
let s={liuliu:"wowoda",age:20};
let ss={long:"賴皮"};
let sss=Object.assign(s,ss);
console.log(sss);

//object.is()方法判斷是否相等;
兩等號判等會在比較時自動進行類型轉換,而三等號不會,如果類型不同,會直接返回false,
而Object.is()則是在三等號的基礎上,又特別處理了NaN、-0、+0,保證了-0和+0不再相同,
但是要注意的是Object.is(NaN, NaN)會返回true

      Symbol:作為一種新的數據類型在es6橫空出世: Symbol字面意思就是象征性的,代表了某個東西的唯一性;

 let myId=Symbol();

 let myname=Symbol();          

 console.log (myname)       ===>Symbol()

 typeof myname             ===>symbol

 console.log(myId===myname)        ===>false

 可以認為 Symbol是一種類似字符串的基本數據類型;不能與其他類型運算;也不能隱式轉換;

 一個Symbol()可以認為在內存中創建看一個新的函數(所以說小括號是函數的標志都不會錯的);

 

 Symbol函數也可以傳入參數;參數僅僅作為對本次Symbo的描述;

 let myId=Symbol("id");

 let myname=Symbol("名字");

 就算兩個Symbol的參數相同,他們也是不相等的;因為創建了一個新的內存空間;

 

 Symbol最大的用處就是作為對象的屬性,來保證唯一性;

 let system=Symbol();

 let foo={};

 foo[system]="windows";       //還可以保證key值為symbol類型的不被 for in遍歷出來;

                                            //同樣還證明了一點:對象的訪問方式,要么以 . ;要么以["這里必須是字符串"];js的底層全部是字符串這種實現;

 console.log(foo);

 

 Symbol 還可以共享一個標志;

 let sy=Symbol.for("aaa");

 Symbol.for(" ")並不會每次都創建一個新的內存;最多只有一個;如果在頁面中 aaa的標志不存在則創建一個 ,有的話直接引用以前的地址;

 

 比如:

 let cccc=Symbol.for("aaa");

 那么: console.log(sy===cccc); //true;  也很容易理解;最終還是保證了某個擁有 aaa描述的Symbol類型的唯一性;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM