对象:无序的键值对的集合,是JavaScript最重要的数据类型。
一些定义和细节
- 对象的键名(又称为属性)都是字符串,没有数字,如果键名不符合标识符规则,直接报错。
- 键值可以是任意数据类型,依附于对象的函数叫做方法,其余为函数。
- 对象的引用:如果两个不同的变量名指向同一个对象,那么他们都是该对象的引用。
对象的增删改查方法
- 读属性和赋值属性:点操作符和方括号操作符
var obj = { p: 'Hello World' }; obj.p // "Hello World" obj['p'] // "Hello World"
- 属性的查看:Object.keys(),用来查看对象本身的所有属性
var obj = { key1: 1, key2: 2 }; Object.keys(obj); // ['key1', 'key2']
- 属性的删除:delete命令 ,该命令只能删除对象自身的属性。
var obj = { p: 1 }; Object.keys(obj) // ["p"] delete obj.p // true obj.p // undefined Object.keys(obj) // []
- 属性是否存在:
- in运算符,检查键名,返回布尔值,不能判断属性是否是自身的还是继承的
var obj = { p: 1 }; 'p' in obj // true 'toString' in obj // true2.hasOwnProperty ,判断属性是否是自身的属性
var obj = {}; if ('toString' in obj) { console.log(obj.hasOwnProperty('toString')) // false }
- 属性的遍历:for...in...循环,遍历对象的可枚举(enumerable)属性,包含继承的属性。
结合hasOwnProperty遍历对象自身属性
var person = { name: '老张' }; for (var key in person) { if (person.hasOwnProperty(key)) { console.log(key); } } // name