es6 新增的資料型別 物件集合 Map

2021-08-27 21:14:04 字數 4062 閱讀 5069

特點:

類似於物件,本質上是鍵值對的集合

「鍵」不侷限於字串,各種型別的值(包括物件)都可以當做鍵

物件「字串-值」,map 「值-值」,是一種更加完善的 hash 結構實現

鍵唯一,相同鍵後面的會覆蓋前面的

, obj1 =

, obj2 =

; obj2.c =3;

//無論鍵內傳什麼 最終都會轉換為字串

obj2[

'd']=4

; obj2[obj]=5

; console.

log(obj.

tostring()

);//[object object]

console.

log(obj, obj1, obj2)

;//

}

map

, obj1 =

;//建立乙個map

const map =

newmap([

['name'

,'bob'],

['name'

,'lucy'],

//自動覆蓋重複鍵值

['age',18

],[obj,

'good'],

[obj1,

'bad'],

[[1,

2],'hhh']]

);console.

log(map)

;//map(5) => "good", => "bad", array(2) => "hhh"}

}

size

, obj1 =

;const map =

newmap([

['name'

,'bob'],

['name'

,'lucy'],

['age',18

],[obj,

'good'],

[obj1,

'bad'],

[[1,

2],'hhh']]

);console.

log(map.size)

;//5 (重複的鍵值算是乙個)

}

1.set 和 get

, obj1 =

,obj2=[1

,2];

const map =

newmap([

[obj,

'good'],

[obj1,

'bad'],

[obj2,

'hhh']]

);//set(支援鏈式編輯)

console.

log(map.

set(

'friends',[

'tom'

,'john'])

.set

('num',20

));//map(5) => "good", => "bad", array(2) => "hhh", "friends" => array(2), "num" => 20}

console.

log(map)

;//map(5) => "good", => "bad", array(2) => "hhh", "friends" => array(2), "num" => 20}

//get(不支援鏈式編輯)

console.

log(map.

get(

'num'))

;//20

console.

log(map.

get(obj));

//good

console.

log(map.

get(obj2));

//hhh

console.

log(map.

get(

'friends'))

;//(2) ["tom", "john"]

}

2.delete(不支援鏈式編輯)

, obj1 =

;//建立乙個map

const map =

newmap([

['name'

,'bob'],

['name'

,'lucy'],

//自動覆蓋重複鍵值

['age',18

],[obj,

'good'],

[obj1,

'bad'],

[[1,

2],'hhh']]

);console.

log(map.

delete

('name'))

;//true

console.

log(map.

delete

('***'))

;//false

console.

log(map)

;//map(4) => "good", => "bad", array(2) => "hhh"}

}

3.has

4.clear

}

5.keys values entries

console.

log(map.

values()

);//mapiterator

console.

log(map.

entries()

);//mapiterator

}

遍歷

)}

注意事項

,'hhhh');

map.

set(

,'aaaa');

//會建立兩個空物件

console.

log(map)

;//map(4) => "hhhh", => "aaaa"}

console.

log(

===)

;//false

}

,[

'abc'])

console.

log(

[...mymap]

)// (2) [array(2), array(2)]

}

,[

'abc']]

])console.

log(mymap)

// map(2) => array(1)}

}

return obj

}const mymap =

newmap()

.set

('yes'

,true).

set(

'no'

,false

) console.

log(

strmaptoobj

(mymap)

)//

}

return strmap

}console.

log(

objtostrmap()

)// map(2)

}

const wm =

newweakmap()

const dom = document.

getelementbyid

('id'

)wm.

set(dom,

'some information'

)wm.

get(dom)

ES6 新增Symbol資料型別

1 symbol 是原始資料型別,不是物件。不能用 new 命令。可以接受乙個字串作為引數,為新建立的 symbol 提供描述。let sy symbol kk console.log sy symbol kk typeof sy symbol 注意相同引數 symbol 返回的值不相等 let s...

ES6新增資料型別

1.新增資料型別 symbol 2.proxy 用來攔截在乙個物件上的指定操作,如 var engineer var interceptor engineer new proxy engineer,interceptor engineer.salary 60 salary is changed to...

es6 新增的資料型別 symbol

應用場景 es5的物件屬性名都是字串,容易造成屬性名衝突 es6引入新的原始資料型別symbol,表示獨一無二的值 物件屬性名可以有兩種型別 1.字串 2.symbol型別 獨一無二,不會與其他屬性名產生衝突 描述 物件屬性名的問題 只會顯示lucy的名字 obj.name bob obj.name...