首頁  >  文章  >  web前端  >  ES6物件的賦值與Symbol

ES6物件的賦值與Symbol

php中世界最好的语言
php中世界最好的语言原創
2018-03-10 15:00:261837瀏覽

這次帶給大家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的解構賦值詳解

ES6的變數的作用域與宣告詳解

以上是ES6物件的賦值與Symbol的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn