JS 对象基本用法

103 阅读1分钟

声明对象的两种语法

写法

第一种
let obj = {'name':'bbter','age':18}
第二种
let obj = new Object({'name':'bbter'})
  • 键名是字符串,不是标识符,可以包含任意字符
  • 引号可以省略,省略之后就只能写标识符
  • 就算引号省略了,键名也还是字符串

如何删除对象的属性

  • delete obj.xxx 或 delete obj['xxx']
  1. 即可删除obj的xxx属性
  2. 区分属性值为undefined 和 不含属性名
  • 不含属性名

'xxx' in obj === false

  • 含有属性名,但是值为undefined

'xxx' in obj && obj.xxx === undefined

  • 注意 obj.xxx === undefined

不能判断'xxx'是否为obj的属性

如何查看对象的属性

  • 查看自身所有属性

Object.entries(obj) 查看对象的key 与 value

Object.keys(obj) 查看对象的key

  • 查看自身 + 共有属性

console.dir(obj)

或者自己依次用Object.keys打印出obj._ _ proto _ _

  • 判断一个属性是自身的还是共有的

obj.hasOwnProperty('toString')

  • 两种方法查看属性

中括号语法: obj['key']

点语法:obj.key

坑新人语法: obj[key] //变量key 值一般不为'key'

  • 优先使用中括号语法

    点语法会误导你,让你以为key不是字符串

    等你确定不会弄混两种语法,再改用点语法

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

  • 直接赋值

let obj = {name:'bbter'} // name是字符串

obj.name = 'bbter' // name是字符串

obj['name'] = 'bbter'

obj['na' + 'me'] = 'bbter'

let key = 'name'; obj[ket] = 'bbter'

  • 批量赋值

Object.assign(obj,{age:18,gender:'man'})

基本同上:已有属性则改;没有属性则增。

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

使用in判断对象中是否由属性时,若自身没有,在原型中找到也是返回true

使用hasOwnproperty()判断对象是否含有属性时,只有自身有才后返回true