0107-关于map & object

108 阅读1分钟
  • day log 01.07

Object

key: value 存储
key 会自动转成字符串来存储;


    const obj = {};
    const keys = o => console.log(Object.keys(o));
    // number
    obj[1] = 'num-1';
    keys(obj);  // ['1']
    // string
    obj['1'] = 'str-1';
    keys(obj);  // ['1']
    // array
    const arr = [1];
    obj[arr] = 'arr-1';
    keys(obj);  // ['1']
    // boolean
    obj[true] = 'bool-true';
    obj[false] = 'bool-false';
    keys(obj);  //  [ '1', 'true', 'false' ]
    // object
    const obj_1 = {};
    const obj_2 = {};
    obj[obj_1] = 'obj-1';
    obj[obj_2] = 'obj-2';
    keys(obj);  // [ '1', 'true', 'false', '[object Object]' ]
    console.log(obj[obj_2]);    //  'obj-2'
    

Map

设计目的就是为了实现值对值的功能 value: value


    const map = new Map();
    map.set(1, 'num-1').set('1', 'str-1');
    console.log(map.keys());    // [Map Iterator] { 1, '1' }
    

toString 规则 (大概?)

key: number 	=> 	Number(key).toString();     
key: object 	=> 	key.toString();     
key: array 	=> 	Array(key).toString();      
key: symbol 	=> 	Symbol(key).toString(); /// ?????       
key: boolean 	=> 	Boolean(key).toString();        
key: string 	=> 	key;