《JS 对象基本用法》

193 阅读1分钟

声明对象的两种语法

let obj = { 'name': 'cheng' , 'age' : 18 }
let obj = new Object({ 'name' : 'cheng' , 'age' : 18 })

其中name、age是属性名,cheng、18是属性值

变量做属性名

let a = 'name'
let obj = { a : 'cheng' }  //属性名为'a'(字符串a)
let obj = new Object({ [a] : 'cheng' })     //属性名为'name'(字符串name)

如何删除对象的属性

delete obj.xxx / delete obj['xxx']   //删除obj的xxx属性

'xxx' in obj === false    //obj对象不含xxx属性名,如果为true,则存在

'xxx' in obj && obj.xxx === undefined   //含有属性名xxx,但值为undefined

如何查看对象的属性

查看所有属性:

Object.keys(obj)   //查看自身所有的属性

console.dir(obj)   //查看所有的自身+共有属性

obj.hasOwnProperty('toString')  //判断一个属性是自身还是共有的

查看单个属性:

obj['name']  
obj.name      //name是字符串
obj[name]     //name是变量

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

直接赋值:

let obj = { 'name': 'cheng' }  
obj.name = 'chen'
obj['name'] = 'chen'
obj['na'+'me'] = 'chen'
----------------------------
let key = 'name'
obj[key] = 'chen'

批量赋值:

Object.assign(obj, { age : 18, color : 'red' )

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

  • hasOwnProperty

    用法:obj.hasOwnProperty('name') ,表示obj为对象,name为要判断的字符串

    它只会判断一个对象属性里是否包含某个name,此方法不会去判断原型

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

    用法:'name' in obj,表示obj为对象,name为要判断的字符串

    它只会判断一个对象属性里是否包含某个name,此方法会去判断原型有没有

       var obj={
        name:123
        };
       obj.hasOwnProperty('name');                  //true
       obj.hasOwnProperty('hasOwnProperty');        //true