/** symbol 資料型別 概念: symbol 提供乙個獨一無二的值
* */
console.log('obj',obj); //
for(let [key,value] of object.entries(obj))
object.getownpropertysymbols(obj).foreach(
function
(item) )
reflect.ownkeys(obj).foreach(
function (item) )
}
/** es6中的資料結構 set() weakset() map() weakmap()
* */
} 字串『2』和數值2同時存在}/*
* set例項方法 add delete clear has
* */
console.log('clear', list.clear(), list) //
set(0) {}}/*
* 對set資料結構的遍歷
* */
for(let v of list.values())
for(let [k,v] of list.entries())
list.foreach(
function
(item) )}/*
* weakset 支援的資料型別必須是 *物件
* weakset中的物件都是弱引用 不會和垃圾**機制掛鉤
* * weakset 不能遍歷,是因為成員都是弱引用,隨時可能消失,遍歷不能保證成員的存在。
* 可能剛剛遍歷結束,成員就取不到了。weakset的乙個用處是儲存dom節點,而不用擔心這些節點從文件移除時,會引起記憶體的洩露。
* weakset結構有以下方法
* weakset.add(value):向weakset例項新增乙個新成員。
* weakset.delete(value):刪除weakset例項指定成員。
* weakset.has(value):返回乙個布林值,表示某個值是否在weakset例項中。
* */
; weaklist.add(arg);
//invalid value used in weak set}/*
* map資料結構 map的key值可以為任意型別
* */
使用陣列作為key
} console.log('size', map.size); //
size 2
console.log('get', map.get('a')); //
get 123
console.log('delete', map.delete('a'), map); //
delete true map(1)
console.log('clear', map.clear(), map); //
clear undefined map(0) {}}/*
* weakmap weakmap 接受的key值必須為物件 其他同weakset
* */
; weakmap.set(o, 123);
console.log('weakmap', weakmap.get(o)); //
weakmap 123}/*
* set 和 array
* */
); arr.push();
console.log('ser-arr', set, arr);
//查let set_exist = set.has(); //
false 引用型別的位址不同
let arr_exist = arr.find(item=>item.t);
//改set.foreach(item=>item.t ? item.t = 2 : '');
arr.foreach(item=>item.t ? item.t = 2 : '');
console.log('set-arr-modify', set, arr);
//刪set.foreach(item=>item.t ? set.delete(item) : '')
let index = arr.findindex(item=>item.t); //
查詢每個元素中包含t的索引
arr.splice(index, 1);
console.info('set-arr-empty', set, arr); //
map-delete set(0) {} }/*
* map 和 array
* */
); console.info('map-array', map, arr);
//查let map_exist = map.has('t'); //
boolean
let array_exist = arr.find(item=>item.t); //
如果存在 則返回資料的值
console.info('map-array', map_exist, array_exist); //
map-array true //改
map.set('t', 2);
arr.foreach(item=>item.t ? item.t = 2 : '');
console.info('map-modify', map, arr); //
map-modify map(1)
//刪除
map.delete('t');
let index = arr.findindex(item=>item.t); //
查詢每個元素中包含t的索引
arr.splice(index, 1);
console.info('map-empty', map, arr); //
map-delete map(0) {} }/*
* map,set,object 的對比
* */
; let map = new
map();
let set = new
set();
let obj ={};
//增map.set('t', 1);
set.add(item);
obj['t'] = 1;
console.info('map-set-obj', map, set, obj); //
map-set-obj map(1) set(1) } //查
console.info(
//)//改
map.set('t',2);
item.t=2; //
set 儲存引用位址
obj['t']=2;
console.info('map-set-obj-modify', map, set, obj); //
map-set-obj-modify map(1) set(1) } //刪
map.delete('t');
set.
delete
(item);
delete obj['t'];
console.info('map-set-empty', map,set, arr);}/*
* 對比小結: map>set>array=object
* 1、在開發過程中涉及到的資料結構 能使用map 不使用 array 尤其是複雜的資料結構使用
* 2、如果對資料結構中的唯一性有要求 考慮使用set 放棄使用object做儲存
* */
ES6新特性使用小結(四)
proxy 的概念和常用方法 let monitor new proxy obj,set target,key,value else 攔截 key in object 操作 has target,key else 攔截對 delete 操作 deleteproperty target,key els...
es6新特性 ES6新特性(一)
var 1 var宣告的是函式作用域 區域性 但在if for等定義的變數是全域性的 2 var 具有變數提公升,預解析 3 在同乙個作用域下,var可以宣告多次 4 var 宣告的變數會掛載到window上 let1 let不存在變數提公升,在變數使用之前,必須要先宣告 2 let在同一作用域下,...
ES6新特性(三) 函式擴充套件
1.1.方法的形參可以賦預設值,在呼叫方法時,如果沒有與之對應的實參則使用形參的預設值。1.2.賦預設值的形參的後面不能有普通形參 沒有賦預設值的形參 1.2.1.預設值只在沒有傳參或者引數為undefined時使用預設值,如果引數為null,則不適用預設值。函式的引數預設值 賦預設值的形參在普通引...