這次帶給大家ES6物件的賦值與Symbol,使用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類型的唯一性;
#相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
相關閱讀:
以上是ES6物件的賦值與Symbol的詳細內容。更多資訊請關注PHP中文網其他相關文章!