美文网首页
关于对象的小坑

关于对象的小坑

作者: lessonSam | 来源:发表于2020-04-02 23:29 被阅读0次
    /* 输出下面代码 看运行结果 */
    // example 1
    var a = {},
      b = 123,
      c = '123';
    a[b] = 'b';
    a[c] = 'c';
    console.log(a[b]); // c
    /* 解析: let obj={'100':100,100:'哈哈'} 结果为{100:哈哈}  因为对象当中属性名是作为字符串解析的 当 后面有相同的属性名时 会覆盖 */
    
    // example 2
    var a = {},
      b = Symbol(123),
      c = Symbol(123);
    a[b] = 'b';
    a[c] = 'c';
    console.log(a[b]); // "b"
    /* 解析 : 可能 很多人会有疑惑  因为 symbol 是惟一的 symbol(123)=== symbol(123) 返回的是false */
    
    var a = {},
      b = { key: 123 },
      c = { key: 456 };
    a[b] = 'b';
    a[c] = 'c';
    console.log(a[b]); //c
    
    /* 解析
     1. 对象的属性名不能使一个对象(遇到对象的属性名会默认转换为字符串)
     2. obj={} arr=[12,13] obj[arr]='lesson' obj==>{'12,23':'lesson'}
     3. 普通对象.toString() 调用的方法是Object.prototype上的方法 (Object.toString.call()) 用来检测数据类型的
     obj={} 调用toString=>["Object","Object"] 因此会覆盖 
    
    */
    

    相关文章

      网友评论

          本文标题:关于对象的小坑

          本文链接:https://www.haomeiwen.com/subject/ifuqphtx.html