对象是是什么
在JS中,有六种简单数据类型:Undefined、Null、Boolean、Number、String、Symbol。
一种复杂数据类型:Object(对象),今天主要将学习到的对象相关的知识做一个总结。
对象是一组属性的无序集合,属性包括属性名与属性值,不如说是每一个值都有一个名称来标识,这个名称是字符串。值可以是数据或者函数。
声明对象的语法
let obj = {'name':'xxx'}
let obj = new Object({'name':'aaa'})
以上是两种声明对象的语法,用new Object()更加严谨一些,但是直接赋值一对键值对也可以。
删除对象的属性
delete obj.xxx //两种方法都可以删除对象的属性
delete obj['xxx']
查看对象的属性
obj['key'] //中括号语法
obj.key //点语法
注意:
obj.name等价于obj[‘name’]
obj.name不等价于obj[name](后者代表引用变量作下标,是动态的)
简单来说,这里的obj.name是字符串,不是变量
let name = ‘aaa’
obj[name]等价于obj[‘aaa’]
而不是obj[‘name’]和obj.name
修改或增加对象的属性
let obj = {name:'xxx'} //name是字符串
obj.name = 'xxx' //name是字符串
obj['name']='xxx'
obj[name]='xxx' //错,因name值不确定
obj['na'+'me']='xxx'
let key='name';obj[key]='xxx'
let key='name';obj.key='xxx' //错 obj.key等价于obj['key']
// 如果对象里有这个属性,则修改属性值;没有这个属性,则直接添加该属性
Object.assign(obj,{age:18,gender:'female'}) //批量赋值
'name' in obj和obj.hasOwnProperty('name') 的区别
let obj={
'name':'aaa'
}
'name' in obj //return true
'toString' in obj //return true
obj.hasOwnProperty('toString') //return false
obj.hasOwnProperty('name') //return true
简单来讲,'xxx' in obj可以判断此属性是不是该对象的属性,那么显式的属性和原型属性在对象里都可以查出来,因此不能排查出是否是原型属性;
obj.hasOwnProperty('xxx')可以判断该属性是不是对象的显式属性,也可以说是是否是用户定义的属性,那么原型属性不在包含范围内,所以用这个方法来查原型属性会返回false
以上内容均为近期学习总结,如有不足或错误之处,欢迎补充指正!