对象:无序的键值对的集合,是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) // []
  • 属性是否存在:
  1. in运算符,检查键名,返回布尔值,不能判断属性是否是自身的还是继承的
var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true
    2.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