JS 对象基本用法

120 阅读2分钟

声明对象的两种语法

  • 方法一
let obj = {
    'name': 'Ann', 
    'age': 18
}
  • 方法二
let obj = new Object({
    'name': 'Ann',
    'age': 18
})

方法一是简写,方法二是标准写法。

  • 注意:
  1. 对象都是以键值对的形式出现
  2. 键名是字符串,不是标识符,可以包含任意字符串
  3. 引号可以省略,省略之后只能写按标识符
  4. 就算引号省略了,键名也还是字符串
  5. 当键名有空格或中文等特殊符号是,必须加引号

增加或修改对象的属性

  • 直接赋值
let obj = {'name': 'Ann'}
obj.name = 'Annie' // 修改属性
obj.age = 18 // 增加属性
//注: 如果对象已有的属性则为修改,没有的属性则为增加
  • 批量赋值
let obj = {}
Object.assign( obj, {'name':'Annie', 'age': '18'})

修改对象的属性

  1. 改自身
obj['name']='Annie'

或批量改自身

Object.assign( obj, {'name':'Annie', 'age': '18'})
  1. 改共有属性
Object.prototype['toString']='xxx'
或 obj.__proto__['toString']='xxx' //不推荐
  1. 改原型
let obj = Object.creat(common)
或 obj.__proto__ = common //不推荐

删除对象的属性

  • 方法一
let obj = {
    name: 'Annie',
    age: '18'
}
obj.name = undefined 
执行结果为:
let obj = {
    name: undefined,
    age: '18'
}// 把name的属性值改为了 undefined,其属性名name仍存在
  • 方法二
let obj = {
    name: 'Annie',
    age: '18'
}
delete obj.name
执行结果为:
let obj = {
    age: '18'
} // 删除了属性名和属性值

查看对象的属性

  • 查看自身单个属性
object.key
或 object['key']
  • 查看自身所有属性
let obj = {
    name: 'Annie',
    age: 18
}
Object.keys(obj) // 查看所有属性名
Object.values(obj) // 查看所有属性值
Object.entries(obj) // 查看属性名和属性值
  • 查看自身+共有属性
console.dir(obj)
  • 判断一个属性是自身还是共有的
obj.hasOwnProperty('toString')

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

'name' in obj 判断一个对象属性或原型里面是否包含'name'的属性。

obj.hasOwnProperty('name') 判断一个对象是否拥有自身为'name'的属性,'name'必须是对象本身的一个成员,此方法不会去判断原型。