美文网首页
【js致死点】对象

【js致死点】对象

作者: 南方帅 | 来源:发表于2019-02-26 09:01 被阅读0次
    • 对象的键名都是字符串,所以加不加引号都可以
      如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。
    // 邪门命名法
    var obj = {
      1: 'a',
      3.2: 'b',
      1e2: true,
      1e-2: true,
      .234: true,
      0xFF: true
    };
    
    
    • 大括号默认是语句。要是对象的话请加()
    ({ foo: 123 }) // 正确
    ({ console.log(123) }) // 报错
    
    • 读取属性值
    var foo = 'bar';
    
    var obj = {
      foo: 1,
      bar: 2
    };
    
    obj.foo  // 1
    obj[foo]  // 2
    
    var obj = {
      123: 'hello world'
    };
    
    obj.123 // 报错
    obj[123] // "hello world"
    
    • 删除属性 delete obj.key
      删除属性只能是对性本身的, 删除继承的会报错
    var obj = Object.defineProperty({}, 'p', {
      value: 123,
      configurable: false
    });
    
    obj.p // 123
    delete obj.p // false
    
    • 判断对象有什么键 in vs hasOwnProperty
      in 是对象含有的, hasOwnProperty 是自身的
    var obj = { p: 1 };
    'p' in obj // true
    'toString' in obj // true
    if ('toString' in obj) {
      console.log(obj.hasOwnProperty('toString')) // false
    }
    

    相关文章

      网友评论

          本文标题:【js致死点】对象

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