对象,是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.xxx ② delete object["xxx"]
3.查看对象的属性
Object.keys(object):查看对象object的所有自身属性Object.values(object):查看对象object的所有自身属性的值Object.entries(object):查看对象object的所有自身属性和属性值console.dir(object):打印出对象object的所有属性,包括自身属性和原型上的属性"xxx" in object:查看xxx属性是否在对象object中,无论属性是在自身还是在原型上,都会返回trueobject.hasOwnProperty("xxx"):判断xxx属性是自身属性还是原型上的属性,如果是自身定义的属性,则返回true,否则返回falseobject.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的方式进行修改。