js最基础的东西(不用看)5


在JavaScript中创建新对象

  使用JavaScript可以创建自己的对象。虽然JavaScript内部和浏览器本身的功能已十分强大,但JavaScript还是提供了创建一个新对象的方法。使其不必像超文本标识语言那样,求于或其它多媒体工具,就能完成许多复杂的工作。
  在JavaScript中创建一个新的对象是十分简单的。首先它必须定义一个对象,而后再为该对象创建一个实例。这个实例就是一个新对象,它具有对象定义中的基本特征。

一、对象的定义
JavaScript对象的定义,其基本格式如下:
Function Object(属性表)
This.prop1=prop1
This.prop2=prop2
...
This.meth=FunctionName1;
This.meth=FunctionName2;
...
在一个对象的定义中,可以为该对象指明其属性和方法。通过属性和方法构成了一个对象的实例。如以下是一个关于University对象的定义:
Function university(name,city,creatDate URL)
This.name=name
This.city=city
This.creatDate=New Date(creatDate)
This.URL=URL
其基本含义如下:
Name-指定一个“单位”名称。  
City-“单位”所在城市。  
CreatDate-记载university对象的更新日期。  
URL-该对象指向一个网址。

二、创建对象实例
一旦对象定义完成后,就可以为该对象创建一个实例了:
NewObject=New object();
其中Newobjet是新的对象,Object已经定义好的对象。例:


U1=New university(“云南省”,“昆明市”,"January 05,199712:00:00","http://www.YN.KM")
U2=New university(“云南电子科技大学”,“昆明”,"January 07,1997 12:00:00","htlp://www.YNKJ.CN")

 
三、对象方法的使用
在对象中除了使用属性外,有时还需要使用方法。在对象的定义中,我们看到This.meth=FunctionName语句,那就是为定义对象的方法。实质对象的方法就是一个函数FunctionName,通过它实现自己的意图。
例在university对象中增加一个方法,该方法是显示它自己本身,并返回相应的字串。
function university(name,city,createDate,URL)
This.Name=Name;
This.city=city;
This.createDate=New Date(creatDate);
This.URL=URL;
This.showuniversity=showuniversity;
其中This.showuniversity就是定义了一个方法---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){
This.length=Size;
for(var X=; X<=size;X++)
this[X]=0;
Reture this;
}
其中arrayName是定义数组的一个名子,Size是有关数组大小的值(1-size),即数组元素的个数。通过for循环对一个当前对象的数组进行定义,最后返回这个数组。
从中可以看出,JavaScript中的数组是从1到size,这与其它0到size的数组表示方法有所不同,当然你可根据需要将数组的下标由1到size调整到0到size-1,可由下列实现:
Function arrayName (size)
For (var X=0; X<=size;X++)
this[X]=0;
this.lenght=size;
Return this;
从上面可以看出该方法是只是调整了this.lenght的位置,该位置是用于存储数组的大小的。从而调整后的数组的下标将与其它语言一致。但请读者注意正是由于数组下标顺序由1到size,使得JavaScript中的对象功能更加强大。
b、创建数组实例
一个数组定义完成以后,还不能马上使用,必须为该数组创建一个数组实例:
Myarray=New arrayName(n);
并赋于初值:
Myarray[1]=“字串1”;
Myarray[2]=“字串2”;
Myarray[3]=“字串3”;
...
Myarray[n]=“字串n”;
一旦给数组赋于了初值后,数组中就具有真正意义的数据了,以后就可以在程序设计过程中直接引用。
创建多维数组
Function creatMArray(row,col){
var indx=0;
this.length=(row*10)+col
for(var x=1;x<=row;x++)
for(var y=1;y<=col;y++)
indx=(x*10)+y;
this[indx]=””;
}
myMArray=new creatMArray();
之后可通过myMArray[11]、myMArray[12]、myMArray[13]、myMArray[21]、myMArray[22]、myMArray[23]、
…来引用。
内部数组
在Java中为了方便内部对象的操作,可以使用窗体(Forms)、框架(Frames)、元素(element)、链接(links)和锚(Anchors)数组实现对象的访问。
 anchors[]:使用《A name=“anchorName“》标识来建立锚的链接。

 links[]: 使用<A href=”URL”>来定义一个越文本链接项。

 Forms[]: 在程序中使用多窗体时,建立该数组。

 Elements[]:在一个窗口中使用从个元素时,建立该数组。

 Frames[]:建立框架时,使用该数组

 anchors[]用于窗体的访问(它是通过《form name=“form1”》所指定的),link[]用于被链接到的锚点的访问(它是通过《a href=URL》所指定的)。Forms[]反映窗体的属性,而anchors[]反映Web页面中的链接属性。
有关锚数组的文档:
<HTML>
<HEAD>
<BODY>
<A NAME=”MyAnchorsName1”> 定义第一个锚名
HTML Code
<A NAME=”MyAnchorsName2”> 定义第二个锚名
HTML Code
<A HREF=”#MyAnchorsName1”>建立锚的链接
<A HREF=”#MyAnchorsName2?gt; 建立锚的链接
….
该文档段建立了两面全锚的链接,可通过Anchors[]访问这些锚。document.Anchors[0]反映第一个锚,而document.Anchors[1]反映第二个锚的有关信息。
 
五、范例
范例1:一个动态文字滚动的例子。
test5_1.htm


<html>
<head>
<title></title>
<script LANGUAGE="JavaScript">
 
with (top.window.location)
{baseURL = href.substring (0,href.lastIndexOf ("/") + 1)}
total_toc_items = 0;
current_overID = "";
last_overID = "";
browser = navigator.appName;
version = parseInt(navigator.appVersion);
client=null;
loaded = 0;
if (browser == "Netscape" && version >= 3) client = "ns3";
function toc_item (img_name,icon_col,width,height) {
if (client =="ns3") {
img_prefix = baseURL + img_name;
this.icon_col = icon_col;
this.toc_img_off = new Image (width,height);
this.toc_img_off.src = img_prefix + "_off.gif";
this.toc_img_on = new Image (width,height);
this.toc_img_on.src = img_prefix + "_on.gif";
}
}
 
function new_toc_item (img_name,icon_row,width,height) {
toc_item [img_name] = new toc_item (img_name,icon_row,width,height);
}
 
function toc_mouseover (itemID) {
if (client =="ns3") {
current_overID = itemID;
if (current_overID != last_overID) {
document [current_overID].src = toc_item [current_overID].toc_img_on.src;
if (last_overID != "") {
document.images [last_overID].src = toc_item[last_overID].toc_img_off.src;
}
last_overID = current_overID;
}
}
}
 
function toc_mouseout () {
if (client =="ns3") {
if (current_overID != "") {
document.images [current_overID].src = toc_item [current_overID].toc_img_off.src;
}
current_overID = "";
last_overID = "";
}
}
new_toc_item ("1",2,120,20);
<!-- Begin
function bannerObject(p){
this.msg = MESSAGE
this.out = " "
this.pos = POSITION
this.delay = DELAY
this.i = 0
this.reset = clearMessage}
 
function clearMessage(){
this.pos = POSITION}
var POSITION = 50;
var DELAY = 150;
var MESSAGE = "这是一个动态JavaScript文字显示的例子";
var scroll = new bannerObject();
function scroller(){
scroll.out += " ";
if(scroll.pos>0)
for (scroll.i = 0; scroll.i < scroll.pos; scroll.i++) { scroll.out +=" " ; }
if (scroll.pos>= 0)
scroll.out += scroll.msg
else
scroll.out = scroll.msg.substring(-scroll.pos,scroll.msg.length)
document.noticeForm.notice.value = scroll.out
scroll.out = " ";
scroll.pos--;
scroll.pos--;
if (scroll.pos < -(scroll.msg.length)) { scroll.reset(); } setTimeout
(‘scroller()‘,scroll.delay);}
</script>
</head>
<body  bgcolor="#000000" link="#C0C0C0" vlink="#C0C0C0"
alink="#008080"
text="#C0C0C0">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%"><form NAME="noticeForm">
<p><input TYPE="text" name="notice" size="40" style="</p>
</form>
</td>
</tr>
</table>
</center></div>
</body>
</html>

 
范例2:颜色变化的例子。
test5_2.htm


<html>
<head>
<script>
<!--
function makearray(n) {
this.length = n;
for(var i = 1; i <= n; i++)
this[i] = 0;
return this;}
hexa = new makearray(16);
for(var i = 0; i < 10; i++)
hexa[i] = i;
hexa[10]="a";
hexa[11]="b";
hexa[12]="c";
hexa[13]="d";
hexa[14]="e";
hexa[15]="f";
function hex(i) {
if (i < 0)
return "00";
else if (i > 255)
return "ff";
else return "" + hexa[Math.floor(i/16)] + hexa[i%16];}
function setbgColor(r, g, b) {
var hr = hex(r);
var hg = hex(g);
var hb = hex(b);
document.bgColor = "#"+hr+hg+hb;}
function fade(sr, sg, sb, er, eg, eb, step) {
for(var i = 0; i <= step; i++) {
setbgColor( Math.floor(sr * ((step-i)/step) + er * (i/step)),
Math.floor(sg * ((step-i)/step) + eg * (i/step)), Math.floor(sb *
((step-i)/step) + eb * (i/step))); }}
function fadein() {
fade(255,0,0,0,0,255,100);
fade(0,0,255,0,255,0,100);
fade(0,255,0, 0,0,0, 100);}
fadein();
// -->
</script>
<body>
</body>
</html>

 
  本讲介绍了用户自行创建对象的方法, 用户可根据需要创建自己的对象。并介绍了JavaScript中建数组的方法。

时间: 2024-10-09 07:23:39

js最基础的东西(不用看)5的相关文章

js最基础的东西(不用看)7

JavaScript窗口及输入输出 JavaScript是基于对象的脚本编程语言,那么它的输入输出就是通过对象来完成的.其中有关输入可通过窗口(Window)对象来完成,而输出可通过文档(document)对象的方法来实现. 一.窗口及输入输出请看下面例子: <HTML><Head><script languaga="JavaScript">Var test=window.prompt("请输入数据:");document.wri

js最基础的东西(不用看)6

JavaScript对象系统的使用 使用浏览器的内部对象系统, 可实现与HTML文档进行交互.它的作用是将相关元素组织包装起来,提供给程序设计人员使用,从而减轻编程人的劳动,提高设计Web页面的能力. 一.浏览器对象层次及其主要作用 除了前面提到过的文档document对象外,Navigator浏览器中还提供了窗口(Window)对象以及历史(History)和位置(Location)对象. 浏览器对象(Navigator) 提供有关浏览器的信息 窗口对象(Windows) Window对象处于

js最基础的东西(不用看)9

用JavaScript实现更复杂的交互(李晓华 2001年04月29日 01:50) 一.什么是框架 框架Frames最主要功用是"分割"视窗,使每个"小视窗"能显示不同的HTM L文件,不同框架之间可以互动(interact),这就是说不同框架之间可以交换讯息与资料.例如:假设您开了两个frames,第一个frame可显示书的目录,第二个frame则显示章节的具体内容. 框架可以将屏幕分割成不同的区域,每个区域有自己的URL,通过Frames[]数组对象来实现不同

js最基础的东西(不用看)8

用JavaScript脚本实现Web页面信息交互(李晓华 2001年04月29日 01:50) 要实现动态交互,必须掌握有关窗体对象(Form)和框架对象(Frames)更为复杂的知识. 一.窗体基础知识 窗体对象可以使设计人员能用窗体中不同的元素与客户机用户相交互,而用不着在之前首先进行数据输入,就可以实现动态改变Web文档的行为. 1.什么是窗体对象窗体(Form):它构成了Web页面的基本元素.通常一个Web页面有一个窗体或几个窗体,使用Forms[]数组来实现不同窗体的访问. <form

JS零基础一步一步做应用全记录

1.起因 作为几个外卖重度依赖癌晚期患者,呆宿舍的时候几个人一起叫外卖已经是常事.偶然看到隔壁宿舍在饿了么订餐的时候,看到在饿了么的首页上有一个谁去拿外卖的一个小游戏/工具,感觉这个小细节,饿了么把握的很好.但好像我们吃得多的是美团,回来之后,百度“谁去拿外卖网页版”,没有结果.想着反正这东西看上去不会太难,那就自己做一个吧.在学校各种事情没时间,放假回家后时间便相当充足.于是,作为一个HTML半入门+JS零基础的孩子,就这样开始了,现在是2015.2.10 10:17. 2.功能设计 对其要求

Node.js系列基础学习----安装,实现Hello World, REPL

Node.js基础学习 1:简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好 2:安装 à安装node.js 在官网安装自己win版本的node.js的版本,下载,安装完毕后在运行中输入node -v若是出现版本号就证明安装成功. à安装n

一些基础的东西总结一下

1.string类型转Date类型 SimpleFormatDate sdf = new SimpleFormatDate("yyyy-MM-dd"); Date date = sdf.parse(dateString); 2.disabled 和 readonly的区别 当表单提交的时候,使用了disabled的表单元素的值是不会被提交的,而readonly的则可以 3.处于$(function(){})里面的js函数外部js是调用不到的 4.ctrl + shift + P 快速定

回归基础的东西,不能只是“感觉会了”

很多时候,觉得自己掌握的东西还是很少,做事情的效率还不是很高,希望自己能够成长起来,认认真真做事. -------------------------------------------------------------------------------------------------------------------------------------------- Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是

JS面试基础

问题: 1.JS中typeof能够得到哪些类型? 考点:JS 的变量类型 2.何时用 双等于 == ?何时用 三等 ===? 考点:强制类型转换 3.window.onload 与 DOMContentLoaded的区别. 4.用JS创建10个<a>标签 ,点击的时候弹出来对应的序号 . 考点:作用域 5.简述如何实现一个模块加载器,实现类似require.js的基础功能. 考点:JS的模块化 6.实现数组的随机排序 考点:JS的基础算法. 1.变量分为值类型和引用类型. var a = 10