JS 对象基本用法

225 阅读2分钟

1、声明对象的两种语法

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

两者都是可用的声明对象的语法,前者更加简便一些,后者更加正确。

2、如何删除对象的属性

也是两种语法

delete obj.xxx   //方法1
delete obj['xxx']   //方法2
  • 判断是否含有属性名
'xxx' in obj   //不含有就返回false
'xxx' in obj&&obj.xxx === undefined   //含有属性名,但是属性值为undefined
  • 注意:
obj.xxx ==== undefined   //不能断定'xxx'是否为obj的属性

示例:

  • 注意:delete只能用于删除对象的属性

3、如何查看对象的属性

  • 查看自身的所有属性名:
Object.keys(obj)

  • 查看自身所有属性值:
Object.values(obj)

  • 查看自身所有属性和属性值:
obj                  //方法一
Object.entries(obj)  //方法二

两种方法的显示方式不同

  • 查看自身属性+共有属性:
console.dir(obj)  //方法一
obj.__proto__    // 方法二,不推荐
  • 判断一个属性是自身的还是共有的
obj.hasOwnProperty('toString')

  • 注意: 'toString' in obj 无法判断是自身的还是共有的
  • 查看属性值:
obj['key']  //初学者推荐
obj.key     //老手使用

其中 .log 的返回值是 undefined,所以最后也就等于 obj['undefined']

  • 注意:
obj.name === obj['name']   //obj['name']中的name是字符串
obj.name !== obj[name]    //obj[name]中的name是变量
  • 一定要分清楚 obj.name、obj['name'] 、obj[name]

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

  • 直接赋值:
let obj = {name: 'xxx'}   //true
obj.name = 'xxx'          //true
obj['name'] = 'xxx'       //true
obj['na' + 'me'] = 'xxx'  //true
let key = 'name'; obj[key] = 'xxx'      //true, 等价于'name':'xxx'                         
obj[name] = 'xxx'                       //false
let key = 'name' ; obj.key = 'xxx'      //false,obj.key等价于obj['key'],也就是'key':'xxx'
  • 批量赋值
Object.assign(obj,{'p1':'1','p2':'2','p3':'3','p4':'4'})
  • 无法通过自身修改或增加共有属性
let obj = {}, obj2 = {}    //共有toString
obj.toString = 'xxx'       //只会改obj的自身属性
obj2.toString              //还是在原型上
  • 偏要修改或增加原型上的属性
obj.__proto__.toString = 'xxx'       //不推荐用__proto__
Object.prototype.toString = 'xxx'    //相对好一些
  • 如果一定要改
let obj = Object.create(common)   //表示以common为原型创建对象
obj.name = 'xxx'                  //创建以后再添加属性和值或者使用Object.assign(obj,{'name':'xxx'...})

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

  • 都是用于查看属性是不是在对象中
  • 但是前者无论是自身属性还是共有属性都会返回true,后者仅仅是自身属性才返回true

6、7种数类型

  • number
  • boolen
  • string
  • symbol
  • null
  • undefined
  • object

7、五个falsy值

  • undefined
  • null
  • ''
  • 0
  • NaN