定义

“无序属性的集合,其属性可以包含基本值、对象或者函数”。严格来说,这就是相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字 ,而每个名字都映射到一个值

创建对象

可以通过对象直接量、关键字new创建对象。

对象直接量

对象直接量是由若干键值对组成的映射表,键/值中间用冒号隔开,键值对之间用逗号隔开,整个映射表用花括号括起来。属性名可以是JavaScript标识符也可以是字符串直接量(特殊符号,数字,表情都可以);

  1. let obj = {
  2. "name":"Peter";
  3. "@": "haha";
  4. "1":123;
  5. " ":34342;
  6. "中文":"中文也可以"
  7. }
  8. //如果不是标识符的话必须用引号。

通过new创建对象

new运算符创建并初始化一个新对象。关键字new后跟随一个函数调用。这里的函数称为构造函数(constructor),构造函数用以初始化一个新创建的对象。

对象属性

对象属性的设置

  1. object.prooerty//使用点运算来设置对象的属性
  2. object['property']
  3. object[property]//其中的property是变量,如果没有设置则我们不知道是什么。

第一种语法使用点运算和一个标识符(字符串),第二种语法使用方括号和一个字符串,看起来更像数组,只是这个数组通过字符串索引而不是数字索引。这种数组是我们所说的关联数组。

对象属性的删除

delete运算符 可以删除对象的属性。delete只是切断属性和宿主对象的联系,而不会操作属性。delete只能删除自身属性,不能删除继承属性也就是原型。返回布尔类型。

  1. delete obj.name;//obj不再具有name属性

对象属性的查找

JavaScript对象可以看作属性的集合,我们经常会检测集合中的成员的所属关系。可以通过in运算符、hasOwnProperty和属性查询。
in运算符的左侧是属性名(字符串),右侧是对象。如果对象的自身属性或继承属性中包含这个属性则返回true。

  1. let o = {"x":1};
  2. "x" in o;// return true
  3. "Y" in o;//return false
  4. "toString" in o;//true,继承的原型

对象的hasOwnProperty()方法用来检测给定的名字是否是对象的属性。对于继承属性性他将返回false:

  1. let o = {"x":1};
  2. o.hasOwnProperty("x")//返回true
  3. o.hasOwnProperty("y")//返回false
  4. o.hasOwnProperty("toString")//false;

对象属性增加

在对象直接量中,属性名与属性值之间通过冒号分隔,冒号左侧是属性名,右侧是属性值,名值对(属性)之间通过逗号分隔。

在下面示例中,使用直接量方法定义对象 obj,然后添加了两个成员,一个是属性,另一个是方法。

  1. var obj = {
  2. x : 1,
  3. y : function () {
  4. return this.x + this.x;
  5. }
  6. }

通过点语法,可以在构造函数内或者对象外添加属性。

  1. var obj = {};
  2. obj.x = 1;
  3. obj.y = function () {
  4. return this.x + this.x;
  5. }