对象的概念

本课程目的:

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

声明和实例化

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

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

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

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

                            var person = { 
                                  name : "Nicholas", 
                                  age : 29, 
                                  job : "Software Engineer",
                                  sayName : function(){ 
                                      alert(this.name); 
                                  } 
                              };
                        

或者

                            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 后,对第一个创建的对象的引用就不存在了。这意味着下次运行无用存储单元收集程序时,该对象将被销毁。每用完一个对象后,就将其废除,来释放内存,这是个好习惯。

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

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

属性的访问

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

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

1. 通过变量访问属性

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

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

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