js物件和map的區別
阿新 • • 發佈:2020-09-12
看一道物件和map的題:
function test1(){ var a={},b='123',c=123; a[b]="b"; a[c]="c"; console.log('a :>> ', a);// {123:"c"} console.log('a[b] :>> ', a[b]); // 斷言 c // 正確 } function test2(){ var a={}; var b = Symbol('123') var c = Symbol('123') a[b]='b' a[c]='c' console.log('a :>> ', a);//{SSymbol(123):'b',Symbol(123):'c'} console.log('a[b] :>> ', a[b]); // 斷言 b // 正確 } function test3(){ var a={}; var b = {key:'123'} var c = {key:'456'} a[b]='b' a[c]='c' console.log('a :>> ', a);// {[Object Object]:"c"} console.log('a[b] :>> ', a[b]); // 斷言 c // 正確 } // test1() // test2() // test3()
然後問 如果把物件換成Map結果是什麼樣的?
function test11(){ var a=new Map(),b='123',c=123; a.set(b,"b") a.set(c,"c") console.log('a :>> ', a);//臥槽 console.log('a[b] :>> ', a.get(b)); // 斷言 b // 結果 b } function test22(){ var a=new Map(); var b = Symbol('123') var c = Symbol('123') a.set(b,"b") a.set(c,"c") console.log('a :>> ', a);// wc console.log('a[b] :>> ', a.get(b)); // 斷言 b // 正確 } function test33(){ var a=new Map(); var b = {key:'123'} var c = {key:'456'} a.set(b,"b") a.set(c,"c") console.log('a :>> ', a);// wc console.log('a[b] :>> ', a.get(b)); // 斷言 b // 結果 b } test11() test22() test33()
然後截圖看看a吧:
最後想說的是:
物件和Map的區別就是:
物件的key是字串或者是Symbol,map的key可以是任何型別;
用法不一樣,你要還是a[b]="b",這樣賦值取值 ,那結果不會變和物件時一樣。
over