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