JS对象基本用法
1.声明对象的语法
声明对象的语法主要有两种:
let obj = {'name':'jack', 'age':'20'} //简易写法(推荐这么写,比较简单)
let obj = new Object({'name':'frank'}) //正规写法(比较少人用,但是需要了解)
注意事项:
- 以上语句的
name,age为键名(key),是对象的属性名。均为字符串,可以包含任何字符,比如空格、emoji表情、中文等等。 jack和20为对象的属性值(value)- 引号可以省略,但是省略之后,只能按照标识符的规则来写。
- 省略引号以后,键名还是字符串。
2.对象属性的增删改查
2.1-删除对象属性
- 语法:
delete obj.属性名或delete obj['属性名']。 - 检验删除是否成功:
'属性名' in obj,返回false则表示删除成功。 - 不包含属性名和**属性值为
undefined**不一样。
2.2-查看对象属性
- 查看自身所有属性:
Object.key(obj) - 查看自身+共有属性:
console.dir(obj),或者依次用Object.keys打印出obj.__proto__ - 判断一个属性是自身还是共有的:
obj.hasOwnProperty('toString')
2.3-修改或增加对象属性
2.3.1-直接赋值
let obj = {name:frank}
obj.name = 'frank'
obj['name'] = 'frank'
obj['na'+'me'] = 'frank'
2.3.2-批量赋值
Object.assign(对象名, { 属性名1:属性值1, 属性名2:属性值2, 属性名3:属性值3, ...})
2.3.3-修改隐藏属性,推荐使用Object.create
let obj = Object.create(common);
obj.name = 'frank';
let obj2 = Object.create(common);
obj2.name = 'jack';
3.'name' in obj和obj.hasOwnProperty('name')的区别
in运算符会检查指定对象的属性和原型链,hasOwnProperty()不会检查原型链- 即使属性的值是
null或undefined,只要属性存在,hasOwnProperty依旧会返回true。