JS数据类型之对象
概述
对象就是一组键值对的集合,是一种无序的数据集合。
1 2 3 4 |
var obj = { foo: 'hello', bar: 'world' } |
上面代码中,大括号就定义了一个对象,它被赋值给变量obj
,所以变量obj
就指向一个对象。该对象内部包含两个键值对,第一个键值对是foo: 'hello'
,其中foo
是键名,字符串hello
是键值,键名与键值之间用冒号分割。键值对之间用逗号分隔。
属性的操作
属性的读取
获取对象的属性,有点运算符和方括号运算符两种方法
1 2 3 4 5 6 7 |
var obj = { p: 'Hello World' }; // 点运算符 console.log(obj.p); // Hello World // 方括号运算符 键名必须放在符号里面 console.log(obj['p']); // Hello World |
属性的赋值
点运算符和方括号运算符,不仅可以用来读取值,还可以用来赋值。
1 2 3 4 5 6 |
var obj = {}; obj.foo = 'Hello' console.log(obj); // {foo: 'Hello'} obj['bar'] = 'World' console.log(obj); // {foo: 'Hello', bar: 'World'} |
属性的查看
查看一个对象本身的所有属性,可以使用Object.keys
方法
1 2 3 4 5 6 |
var obj = { key1: 1, key2: 2, } console.log(Object.keys(obj)); // ['key1', 'key2'] |
属性的删除
delete
命令用来删除对象的属性,删除成功后返回true
。
1 2 3 4 5 6 |
var obj = { p: 1 }; console.log(Object.keys(obj)); // ['p'] delete obj.p; console.log(obj.p); // undefined console.log(Object.keys(obj)); // [] |
上面代码中,delete
命令删除对象的p
属性。删除后,在读取p
属性就会返回undefined
,并且Object.keys
方法的返回值也不再包含该属性。
对象遍历
for...in
循环用来遍历一个对象的全部属性。
1 2 3 4 5 |
var obj = {a: 1, b: 2, c: 3}; for(var i in obj) { console.log(i); // a b c console.log(obj[i]); // 1 2 3 } |
for...in
循环有两个使用注意点:
- 它遍历的是对象所有可遍历的属性,会跳过不可遍历的属性
- 它不仅遍历对象自身的属性,还会遍历继承的属性