JS 对象基本用法

592 阅读1分钟

声明对象的两种语法

  1. let obj={'name':'frank','age':18}
  2. let obj=new Object({'name':'frank','age':18})

如何删除对象的属性

  1. obj.name=undefined //删除属性值,使属性值位undefined

  2. delete obj.name; //删除了这个属性名以及属性值

  3. delete obj['name']//删除了这个属性名以及属性值

  4. 注意区分属性值位undefined和不含属性名:

    不含属性名:'name' in obj ===false

    含属性名但值为undefined :'name' in obj && obj.name===undefined 注意:obj.name===undefined 不能判定name是否为obj的属性

如何查看对象的属性

  1. 查看自身所有属性:
  • 查看属性名(键值key): Object.keys(obj)
  • 查看属性值:Object.values(obj)
  • 查看属性名和属性值:Object.entries(obj)
  1. 查看自身加共有属性:console.dir(obj)
  2. 判断一个属性是自身属性还是共有属性:obj.hasOwnProperty('name')---->true||false
  3. 查看某个属性:obj['key']obj.key key为要查看的属性名

如何修改或增加对象的属性

  1. 直接赋值 :let obj={name:'frank'} obj.name='frankobj['name']='frank

  2. 批量赋值:Object.assign(obj,{age:18,gender:'man'}) //这是es6新出的api

  3. 修改或增加共有属性:

    推荐使用:var person=Object.create(common);//这样,person的原型就是common了

'name' in obj和obj.hasOwnProperty('name') 的区别

'name' in obj :判断的是对象的所有属性,包括对象实例及其原型的属性; 而hasOwnProperty则是判断对象实例的是否具有某个属性,不包含其原型的属性。

例如:

var obj={
       key:123
   };
   obj.hasOwnProperty('key');                             //true
   obj.hasOwnProperty('hasOwnProperty');                  //false
  var obj={
        key:123
    };
    'key' in obj;                                           //true
    'hasOwnProperty' in obj;                                //true