在JavaScript中生成自定义的对象
使用对象便于组织信息。下面我们介绍如何在JavaScript中生成自定义的对象。
——————————————————————
JavaScript 对象
在前面几章中我们学到JavaScript中有些内置的对象,比如String, Date, Array等等。除此之外,你还可以定义自己的对象。
对象是一种特殊的数据,含有属性和函数。
下面让我们用一个例子来说明:比如一个人是一个对象。属性是与对象有联系的值,比如人的属性包括姓名,身高,体重,年龄,肤色,眼睛的颜色等等。所有人都有这些属性,但是每个人的属性值都不同。对象还有函数,函数是可以对对象执行的动作。比如人的函数可以是吃eat(), 睡sleep(), 工作work(), 玩play(), 等等。
属性
访问一个对象的属性的语法是:
| objName.propName |
只要赋值就可以很容易的给对象增加一个属性。假设对象personObj已经存在,你可以象下面这样给它一些属性,包括firstname, lastname, age, 和 eyecolor:
|
personObj.firstname=”John” personObj.lastname=”Doe” personObj.age=30 personObj.eyecolor=”blue” document.write(personObj.firstname) |
上面的代码将会输出:
| John |
函数
对象也可以有函数,调用对象函数的语法如下:
| objName.methodName() |
备注: 函数括号里面可以有参数。
调用personObj的函数sleep()可以这样写:
| personObj.sleep() |
定义自己的对象
有两种不同的方法可以生成一个新的对象:
1. 直接生成一个对象的实例
下面的代码生成一个对象实例,并给了它4个数性:
|
personObj=new Object() personObj.firstname=”John” personObj.lastname=”Doe” personObj.age=50 personObj.eyecolor=”blue” |
给对象personObj增加一个函数也很简单,如下代码即可为它增加一个叫做 eat() 的函数:
| personObj.eat=eat |
2. 定义一个对象的模板
模板定义了对象的结构:
|
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname this.lastname=lastname this.age=age this.eyecolor=eyecolor } |
注意模板实际是一个函数,你需要在函数内给this.propertyName一一赋值。每个属性前面加关键字”this”的原因是你将会同时有多个对象人,必须指明正在处理哪个人信息。“this”的含义就是指手头正在处理的这个对象。
一旦定义了模板,就可以用它来生成对象实例,如下所示:
|
myFather=new person(“John”,”Doe”,50,”blue”) myMother=new person(“Sally”,”Rally”,48,”green”) |
在模板内还可以增加一些函数,比如下面的newlastname函数:
|
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname this.lastname=lastname this.age=age this.eyecolor=eyecolor this.newlastname=newlastname } |
注意上面对象的函数只是定义了名称上的联系,我们下面还要具体写函数 newlastname() 的实现:
|
function newlastname(new_lastname) { this.lastname=new_lastname } |
有了以上定义,现在你可以通过写 myMother.newlastname(“Doe”) 来调用这个函数了。
Anonymous:
好
19 December 2007, 2:05 pmfresher:
一知半解的看完了,谢谢啦!
16 October 2008, 2:55 amIT:
总算是看完了。呵呵!好像不是很全。
23 December 2008, 6:29 am有很多代码不能完全COPY,不是标点符号错误就是少点什么。
所以代码都是自己敲的。
这样也不错。
再次感谢站长!
empty:
总是看没有留言,今天看完了,还是要说声谢谢的!楼主整理的很仔细,在此说一声谢谢!
13 June 2009, 3:40 amVincent:
这些内容都很不错!谢谢你了!
24 July 2009, 3:24 amAnonymous:
很好!
18 October 2009, 11:57 pm只是代码中全角符号太多了!
Aqua:
尽量改正吧。
19 October 2009, 9:34 amDirk:
收获很大
24 October 2009, 4:46 ampineapple:
很不错
18 November 2009, 10:50 pmslx:
说实话JavaScript真的只有这么点内容还是只有一部分啊,以前没怎么接触过
29 December 2009, 2:20 amJavaScript,但是看完也就那样,可能是内容不够深入吧。
Aqua:
是啊,其实各种语言都那么回事儿,这只是个入门,讲一下基本的语法,真正实现的功能可以千变万化的
29 December 2009, 11:02 amAnonymous:
谢谢Aqua
27 April 2010, 3:33 amAnonymous:
谢谢
11 May 2010, 9:10 pm