JavaScript对象基本用法

116 阅读2分钟

Hello大家好!我是Cathy海希。

对象,作为JavaScript(以下简称JS)7大数据类型里最复杂的一种,要学习的东西可就多咯~快来跟我一起查漏补缺吧!

声明对象的两种语法

  1. 正规写法
    let obj = new Object({'name':'Cathy'})
    
  2. 简单常用的写法
    let obj = {'name': 'Cathy'}
    // 注意!这里的'name'即使把引号去掉它也是字符串。
    
    

如何删除对象的属性

  1. delete操作符用于删除对象的某个属性(属性名+属性值)
    delete obj.name | delete obj['name']
    
  2. 如果只想删除对象的属性值的话
    obj.name = undefined
    // 但是'name'这个属性名还在,只是属性值变成咯undefined而已。
    
    

如何查看对象的属性

查看属性分为查看对象的所有属性和单个属性。

查看所有属性

  1. 查看自身特有的属性
  • Object.keys(obj2)查看自身特有的keys;
  • Object.values(obj2)查看自身特有的values;
  • Object.entries(obj2)查看自身所有的keys+values;
  1. 查看自身特有的+共有属性

通过目录的形式console.dir(obj2)来查看自身特有的属性+共有属性。

查看单个属性

总共有3种方法。

  1. obj['name']👈优先使用这个方法!'name'是字符串,看得清清楚楚。
  2. obj.name👈这个用法会误导我们!让我们误以为name不是字符串。
  3. obj[name]👈这里的name是变量!!最危险的用法⚠️

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

  • 修改自身属性
    • 单个修改:obj['name'] = 'Jack'
    • 批量修改:Object.assign(obj,{age:18,...})
  • 修改共有属性
    • obj.__proto__['toString'] = 'xxx'
    • Object.prototype['toString'] = 'xxx'(整个JS全被改了)
  • 修改原型
    • obj.__proto__ = common
    • let obj = Object.create(common)

⚠️注意:所有__proto__代码都是强烈不推荐写的!!

增加属性的话基本同上,已有属性则改;没有属性则增。

'xxx' in objobj.hasOwnProperty('xxx') 的区别

概括来说这两者都可以判断obj这个对象是否含xxx这个属性,但是:

  • 'xxx' in obj无法区别是自身的还是原型上的。看截图,不管是obj的自身属性name还是共有属性toString,它都会返回true。
  • 那我那如何判断一个属性是自身特有的还是共有的呢?🤔看截图 obj.hasOwnProperty('toString') === false 说明toString不是它自身特有的属性! obj.hasOwnProperty('name') === true 说明name是它自身特有的属性!

总结

怎么样?对象相关的知识点是不是很多呢?我们只能耐心地记忆,然后经常性地回顾啦! See you next time!👋