对象的概念
本课程目的:
- 理解什么是对象
- 如何定义类或对象
声明和实例化
创建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";