对象的概念

本课程目的:

  1. 理解什么是对象
  2. 如何定义类或对象

声明和实例化

创建Object实例的方式有两种:

1. 创建自定义对象的最简单方式就是创建一个Object实例,然后为它添加属性和方法,如下:

1
2
3
4
5
6
7
8
9
//创建一个新的Object对象,存放在'person'变量中
var person = new Object();
//给此对象设置一些属性
person.name = "Nicholas";
person.age = 29;
person.job = "Software Engineer";
person.sayName = function(){
    alert(this.name);
}

2. 按照字面量语法可以写成:

1
2
3
4
5
6
7
8
var person = {
      name : "Nicholas",
      age : 29,
      job : "Software Engineer",
      sayName : function(){
          alert(this.name);
      }
  };

或者

1
2
3
4
5
6
7
var person = {}; //与new Object()相同
person.name = "Nicholas";
person.age = 29;
person.job = "Software Engineer";
person.sayName = function(){
    alert(this.name);
}

对象引用

在 ECMAScript 中,不能访问对象的物理表示,只能访问对象的引用。每次创建对象,存储在变量中的都是该对象的引用,而不是对象本身。

对象废除

因ECMAScript拥有无用存储单元收集程序(garbage collection routine),想要废除某一对象时,把对象的所有引用都设置为 null,当变量 oObject 设置为 null 后,对第一个创建的对象的引用就不存在了。这意味着下次运行无用存储单元收集程序时,该对象将被销毁。每用完一个对象后,就将其废除,来释放内存,这是个好习惯。

1
2
3
var oObject = new Object;
// do something with the object here
oObject = null;

注意:废除对象的所有引用时要当心。如果一个对象有两个或更多引用,则要正确废除该对象,必须将其所有引用都设置为 null。

属性的访问

1
2
3
4
//方括号访问:
alert(person["name"]); //"Nicholas"
//点表示法:
alert(person.name); //"Nicholas"

一般来说,访问对象属性推荐使用点表示法。在有些特殊情况下用方括号语法:

1. 通过变量访问属性

1
2
var propertyName = "name";
alert(person[propertyName]); //"Nicholas"

2. 属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字

1
person["first name"] = "Nicholas";

上一节:语句

下一节:定义类或对象