JS 对象基本用法

108 阅读1分钟

内容1:声明对象的两种语法 内容2:如何删除对象的属性 内容3:如何查看对象的属性 内容4:如何修改或增加对象的属性 内容5:'name' in obj和obj.hasOwnProperty('name') 的区别

申明对象的两种语法

对象可以是无序的数据集合或键值对的集合。

let obj = {'name':'koko','age':18}\\简化写法
let obj = new Object({'name':'koko'})\\正规写法
  • 键值是字符串,不是标识符,可以包含任何字符,包括空字符串''。
  • 即使省略引号,键名仍然是字符串。
  • Object.keys(obj)可以的到所有的key。

如何删除对象的属性

delete obj.xxx
delete obj['xxx']
  • 注意区分属性值为undefined和不含属性名。
obj.name = undefined//删除属性值,没有删除属性
  • 判断是否删除成功
'xxx' in obj === false
  • 判断是否是只删除了属性值
'xxx' in obj && obj.xxx === undefined

如何查看对象的属性

查看自身所有属性

Object.keys(obj)

查看自身属性+共有属性

console.dir(obj)

或者依次用Object.keys打印

判断一个属性是属于自身or共有

obj.hasOwnProperty('toString')

查看单个属性

obj['key'] \\中括号语法
obj.key \\语法
obj.name !== obj[name]\\第一个name是字符串,第二个是变量

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

直接赋值

let obj ={name:'koko'}

批量赋值

object.assign(obj,{age:18,gender:'female'})

无法通过自身修改或增加共有属性

  • 如果一定要修改的话,可用以下方法,但一般不建议修改。
obj.__proto__.toString='xxx'
Object.prototype.toString='xxx'

直接修改隐藏属性

let obj = Object.create(common)
obj.name = 'frank'
let obj2 = Object.create(common)
obj2.name = 'koko'
  • 修改后的隐藏对象仍然有一个原型。