JS对象基本用法

129 阅读2分钟

对象,是JS中唯一的复杂数据类型,可以定义为无序的数据集合或者键值对的集合,这篇文章简要描述一下JS对象的一些基本用法。

1.声明对象的两种语法

  • 简单写法:let obj = {"name":"mary","age":18}
  • 正规写法:let obj = new Object({"name":"mary","age":18})

需要注意一些细节:对象内的键名是字符串,可以包含“任意”字符,不是标识符;键名中的引号可以省略,但是省略之后只能写标识符,也可以直接写数字,不过还是都会被转换成字符串。例如键名是2,则被转换为"2",键名是name,则被转换为"name",如果需要使用变量,则应该加上[],例如声明let key = "name",那么键名可以是[key],就等价于键名是"name"。

2.删除对象的属性

删除对象的属性要使用delete,语法如下:

delete object.xxxdelete object["xxx"]

3.查看对象的属性

  • Object.keys(object):查看对象object的所有自身属性
  • Object.values(object):查看对象object的所有自身属性的值
  • Object.entries(object):查看对象object的所有自身属性和属性值
  • console.dir(object):打印出对象object的所有属性,包括自身属性和原型上的属性
  • "xxx" in object:查看xxx属性是否在对象object中,无论属性是在自身还是在原型上,都会返回true
  • object.hasOwnProperty("xxx"):判断xxx属性是自身属性还是原型上的属性,如果是自身定义的属性,则返回true,否则返回false
  • object.xxx或object["xxx"]:查看object中xxx属性的值

4.修改或增加对象的属性

在JS中,修改和增改对象的属性是一样的,当属性存在时则修改,不存在时则增加。

直接赋值:①object.xxx = "yyy";②object["xxx"] = "yyy"

批量赋值:Object.assign(object,{"xxx1":"yyy1","xxx2":"yyy2","xxx3":"yyy3"}),通过Object.assign函数实现为对象批量赋值

每个对象都有一个隐藏属性,指向对象原型的地址,如果要修改这个隐藏属性,可以使用object.__proto__,但是不推荐使用,可以使用Object.create方法在创建对象的时候来指定隐藏属性对应的值,例如let obj = Object.create(null)就创建了一个隐藏属性为空的obj对象,即该对象没有原型。

注意:不能通过自身修改或增加原型中的属性,原型中的属性是不推荐修改的,这样会引发很多问题,如果非要修改,可以使用Object.prototype.xxx的方式进行修改。