在JavaScript中创建新对象
使用JavaScript可以创建自己的对象虽然JavaScript内部和浏览器本身的功能已十分强大但JavaScript还是提供了创建一个新对象的方法使其不必像超文本标识语言那样求于或其它多媒体工具就能完成许多复杂的工作
在JavaScript中创建一个新的对象是十分简单的首先它必须定义一个对象而后再为该对象创建一个实例这个实例就是一个新对象它具有对象定义中的基本特征
一对象的定义
JavaScript对象的定义其基本格式如下
Function Object(属性表)
Thisprop=prop
Thisprop=prop
th=FunctionName;
th=FunctionName;
在一个对象的定义中可以为该对象指明其属性和方法通过属性和方法构成了一个对象的实例如以下是一个关于University对象的定义
Function university(namecitycreatDate URL)
Thisname=name
Thiscity=city
ThiscreatDate=New Date(creatDate)
ThisURL=URL
其基本含义如下
Name-指定一个单位名称
City-单位所在城市
CreatDate-记载university对象的更新日期
URL-该对象指向一个网址
二创建对象实例
一旦对象定义完成后就可以为该对象创建一个实例了
NewObject=New object();
其中Newobjet是新的对象Object已经定义好的对象例
U=New university(云南省昆明市January ::)
U=New university(云南电子科技大学昆明January ::htlp://wwwYNKJCN)
三对象方法的使用在对象中除了使用属性外有时还需要使用方法在对象的定义中我们看到th=FunctionName语句那就是为定义对象的方法实质对象的方法就是一个函数FunctionName通过它实现自己的意图
例在university对象中增加一个方法该方法是显示它自己本身并返回相应的字串
function university(namecitycreateDateURL)
ThisName=Name;
Thiscity=city;
ThiscreateDate=New Date(creatDate)
ThisURL=URL
Thisshowuniversity=showuniversity;
其中Thisshowuniversity就是定义了一个方法---showuniversity()
而showuniversity()方法是实现university对象本身的显示
function showuniversity()
For (var prop in this)
alert(prop+=+this[prop]+);
其中alert是JavaScript中的内部函数显示其字符串
四JavaScript中的数组使用New创建数组
JavaScript中没有提供像其它语言具有明显的数组类型但可以通过function定义一个数组并使用New对象操作符创建一个具有下标的数组从而可以实现任何数据类型的存储
a定义对象的数组
Function arrayName(size){
Thislength=Size;
for(var X=; X<=size;X++)
this[X]=;
Reture this;
}
其中arrayName是定义数组的一个名子Size是有关数组大小的值(size)即数组元素的个数通过for循环对一个当前对象的数组进行定义最后返回这个数组
从中可以看出JavaScript中的数组是从到size这与其它0到size的数组表示方法有所不同当然你可根据需要将数组的下标由1到size调整到0到size-1可由下列实现:
Function arrayName (size)
For (var X=; X<=size;X++)
this[X]=;
thislenght=size;
Return this;
从上面可以看出该方法是只是调整了thislenght的位置该位置是用于存储数组的大小的从而调整后的数组的下标将与其它语言一致但请读者注意正是由于数组下标顺序由1到size使得JavaScript中的对象功能更加强大
b创建数组实例
一个数组定义完成以后还不能马上使用必须为该数组创建一个数组实例
Myarray=New arrayName(n);
并赋于初值
Myarray[]=字串1
Myarray[]=字串2
Myarray[]=字串3
Myarray[n]=字串n
一旦给数组赋于了初值后数组中就具有真正意义的数据了以后就可以在程序设计过程中直接引用
创建多维数组
Function creatMArray(rowcol){
var indx=;
thislength=(row*)+col
for(var x=;x<=row;x++)
for(var y=;y<=col;y++)
indx=(x*)+y;
this[indx]=;
}
myMArray=new creatMArray();
之后可通过myMArray[]myMArray[]myMArray[]myMArray[]myMArray[]myMArray[]
…来引用
内部数组
在Java中为了方便内部对象的操作可以使用窗体(Forms)框架(Frames)元素(element)链接(links)和锚(Anchors)数组实现对象的访问
anchors[]:使用《A name=anchorName》标识来建立锚的链接
links[]: 使用<A href=URL>来定义一个越文本链接项
Forms[]: 在程序中使用多窗体时建立该数组
Elements[]:在一个窗口中使用从个元素时建立该数组
Frames[]:建立框架时使用该数组
anchors[]用于窗体的访问(它是通过《form name=form》所指定的)link[]用于被链接到的锚点的访问(它是通过《a href=URL》所指定的)Forms[]反映窗体的属性而anchors[]反映Web页面中的链接属性
有关锚数组的文档
<HTML>
<HEAD>
<BODY>
<A NAME=MyAnchorsName> 定义第一个锚名
HTML Code
<A NAME=MyAnchorsName> 定义第二个锚名
HTML Code
<A HREF=#MyAnchorsName>建立锚的链接
<A HREF=#MyAnchorsName?gt; 建立锚的链接
…
该文档段建立了两面全锚的链接可通过Anchors[]访问这些锚documentAnchors[]反映第一个锚而documentAnchors[]反映第二个锚的有关信息
五范例范例
一个动态文字滚动的例子
<html>
<head>
<title></title>
<script LANGUAGE=JavaScript>
with (topwindowlocation)
{baseURL = hrefsubstring (hreflastIndexOf (/) + )}
total_toc_items = ;
current_overID = ;
last_overID = ;
browser = navigatorappName;
version = parseInt(navigatorappVersion);
client=null;
loaded = ;
if (browser == Netscape && version >= ) client = ns;
function toc_item (img_nameicon_colwidthheight) {
if (client ==ns) {
img_prefix = baseURL + img_name;
thisicon_col = icon_col;
thistoc_img_off = new Image (widthheight);
thistoc_img_offsrc = img_prefix + _offgif;
thistoc_img_on = new Image (widthheight);
thistoc_img_onsrc = img_prefix + _ongif;
}
}
function new_toc_item (img_nameicon_rowwidthheight) {
toc_item [img_name] = new toc_item (img_nameicon_rowwidthheight);
}
function toc_mouseover (itemID) {
if (client ==ns) {
current_overID = itemID;
if (current_overID != last_overID) {
document [current_overID]src = toc_item [current_overID]toc_img_onsrc;
if (last_overID != ) {
documentimages [last_overID]src = toc_item[last_overID]toc_img_offsrc;
}
last_overID = current_overID;
}
}
}
function toc_mouseout () {
if (client ==ns) {
if (current_overID != ) {
documentimages [current_overID]src = toc_item [current_overID]toc_img_offsrc;
}
current_overID = ;
last_overID = ;
}
}
new_toc_item ();
<! Begin
function bannerObject(p){
thismsg = MESSAGE
thisout =
thispos = POSITION
thisdelay = DELAY
thisi =
thisreset = clearmessage}
function clearmessage(){
thispos = POSITION}
var POSITION = ;
var DELAY = ;
var MESSAGE = 这是一个动态JavaScript文字显示的例子;
var scroll = new bannerObject();
function scroller(){
scrollout += ;
if(scrollpos>)
for (scrolli = ; scrolli < scrollpos; scrolli++) { scrollout += ; }
if (scrollpos>= )
scrollout += scrollmsg
else
scrollout = scrollmsgsubstring(scrollposscrollmsglength)
documentnoticeFormnoticevalue = scrollout
scrollout = ;
scrollpos;
scrollpos;
if (scrollpos < (scrollmsglength)) { scrollreset(); } setTimeout
(scroller()scrolldelay);}
</script>
</head>
<body onload=scroller() bgcolor=# link=#CCC vlink=#CCC
alink=#
text=#CCC>
<table border= cellspacing= cellpadding=>
<tr>
<td width=%><form NAME=noticeForm>
<p><input TYPE=text name=notice size= ></p>
</form>
</td>
</tr>
</table>
</center></div>
</body>
</html>
范例:颜色变化的例子
<html>
<head>
<script>
<!
function makearray(n) {
thislength = n;
for(var i = ; i <= n; i++)
this[i] = ;
return this;}
hexa = new makearray();
for(var i = ; i < ; i++)
hexa[i] = i;
hexa[]=a;
hexa[]=b;
hexa[]=c;
hexa[]=d;
hexa[]=e;
hexa[]=f;
function hex(i) {
if (i < )
return ;
else if (i > )
return ff;
else return + hexa[Mathfloor(i/)] + hexa[i%];}
function setbgColor(r g b) {
var hr = hex(r);
var hg = hex(g);
var hb = hex(b);
documentbgColor = #+hr+hg+hb;}
function fade(sr sg sb er eg eb step) {
for(var i = ; i <= step; i++) {
setbgColor( Mathfloor(sr * ((stepi)/step) + er * (i/step))
Mathfloor(sg * ((stepi)/step) + eg * (i/step)) Mathfloor(sb *
((stepi)/step) + eb * (i/step))); }}
function fadein() {
fade();
fade();
fade( );}
fadein();
// >
</script>
<body>
</body>
</html>
本讲介绍了用户自行创建对象的方法 用户可根据需要创建自己的对象并介绍了JavaScript中建数组的方法