1、oTempCar.mpg=23;oTempCar.showColor=function()alert(this.color);return oTempCar;var oCar1=createCar();var oCar2=createCar();这里,前面的所有代码都包含在createCar()函数中,此外还有一行额外的代码,返回Car对象作为函数值。调用此函数时,将创建新对象,并赋予它所有必要的属性,复制出一个前面说明的car对象。使用该方法,可以容易地创建car对象的两个版本,他们的属性完全一样。当然,还可以修改creatCar()函数,给它传递各个属性的默认值,而不是赋予属性默认值: F
2、unction createCar(sColor,iDoors,iMpg)Var oTempCar=new Object();oTempCar.color= sColor;oTempCar.doors= iDoors;oTempCar.mpg= iMpg;/该函数属于具体的对象,给具体对象动态添加的一个函数oTempCar.showColor=function()alert(this.color); return oTempCar;Var oCar1=createCar(,4,23);Var oCar2=createCar(blue,2,26);oCar1.showColor();/ 输出oC
3、ar2.showColor();给createCar()函数加上参数,即可为要创建的car对象的color、doors和mpg属性赋值。使这两个对象具有相同的属性,却有不同的属性值。但这里有个问题:每次调用函数createCar(),都要创建新函数showColor(),意味着每个对象都有自己的showColor()方法版本。事实上,每个对象用的都是同一段代码。这样的定义方法还有一个如下的变形:function Car(sColor,iDoors,iMpg) this.color= sColor;this.doors= iDoors;this.mpg= iMpg;this.showColor=
4、function()alert(this.color);var oCar1=new Car(var oCar2=new Car(这个方法和上一个方法有个一样的缺陷:重复的创建了showColor()函数。为了解决这个缺陷我们可以用下面的方法。1.2 原型方式该方法利用了对象的prototype属性。用空构造函数来设置类名,然后所有的属性和方法都被直接赋予prototype属性:function Car()Car.prototype.color=Car.prototype.doors=4;Car.prototype.mpg=23;Car.prototype.showColor=function(
5、)Var oCar1=new Car();Var oCar2=new Car();使用这个方法可以解决在内存中重复创建showColor()函数问题,但又会有新的问题,考虑下面的例子:Car.prototype.drivers=new Array(Mike,Sue);Car.prototype.showColor=function()alert(this.color);/改变颜色oCar1.color=oCar1.drivers.push(Matt/向数组中压进去一个元素,该元素位于数组的最后alert(oCar1.drivers);/ 输出Mike,Sue,Mattalert(oCar2.d
6、rivers);这里,属性drivers是指向Array对象的指针。改变指针指向的内容,所有的实例都会改变。看来这种方法也不可取1.3 混合方式这种方式就是用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)。结果所有的函数只创建一次,而每个对象都具有自己的对象属性实例。function Car(sColor,iDoors,iMpg) this.drivers=new Array(/利用原型适合声明类的方法,在生成的多个对象中该方法仅声明一次,3,25);Mike,Sue这种方式是JavaScript主要采用的方式,它具有其他方式的特性,却没有它们的缺陷。在实际编程中应用的
7、也是最多了。1.4 混合方式另外还有JSON创建方式。其创建的方式如下:var Car =color: ,doors: 4,mpg: 23,drivers: name:, age: 20, Married: false, name: 30, Married: true, showColor: function() alert(this.color);这种创建对象的方式也比较优雅。可作为Ajax返回的文本,然后用eval()函数将其还原成一个对象。著名的脚本框架Dwr,JQuery等就有专门接收返回文本而后转化为JSON对象的异步通信方法。二、有关对象操作语句 JavaScript不是一纯面向对
8、象的语言,它设有提供面向对象语言的许多功能,因此JavaScript设计者之所以把它你”基于对象”而不是面向对象的语言,在JavaScript中提供了几个用于操作对象的语句和关键字及运算符。 1)、for.in语句格式如下:for(对象属性名 in 已知对象名)说明:该语句的功能是用于对已知对象的所有属性进行操作的控制循环。它是将一个已知对象的所有属性反复置给一个变量;而不是使用计数器来实现的。 该语句的优点就是无需知道对象中属性的个数即可进行操作。 下面的for语句是通过数组下标顺序值,来访问每个对象的属性for(var j=0;j10;j+)案理:headtitletest.html fu
9、nction showData(object) for(var x=0;xbody /body/html该函数是通过数组下标顺序值,来访问每个对象的属性,使用这种方式首先必须知道数组的下标值,否则若超出范围,则就会发生错误。而使For.in语句,则根本不需要知道对象属性的个数,见下:案理1:循环数组元素(每次取到一个下标) for(var prop in object) alert(prop); document.write(objectprop);案理2:循环对象属性(每次取到一个属性名)test5.html2)、with语句 使用该语句的意思是:在该语句体内,任何对变量的引用被认为是这个对
10、象的属性,以节省一些代码。with(object). 所有在with语句后的花括号中的语句,都是在后面object对象的作用域的。案例:with应用trtd用户名input name=username/tr密码input type=password name=td colspan=2 align=centerbutton type=submit提交reset重置/form3)、this关键字 this是对当前对象的引用,在JavaScript由于对象的引用是多层次,多方位的,往往一个对象的引用又需要对另一个对象的引用,而另一个对象有可能又要引用另一个对象,这样有可能造成混乱,最后自己已不知道现
11、在引用的那一个对象,为此JavaScript提供了一个用于指定当前对象的语句this案理: alert(this);/指向即将生成的对象4)、new运算符 虽然在JavaScript中对象的功能已经是非常强大的了。但更强大的是设计人员可以按照需求来创建自己的对象,以满足某一特定的要求。使用new运算符可以创建一个新的对象。其创建对象使用如下格式:var Newobject=new Object(Parameters table);其中Newobject创建的新对象:object是已经存在的对象; parameters table参数表;new是JavaScript中的命令语句。如创建一个日期新
12、对象var newData=new Date();alert(newData);之后就可使newData作为一个新的日期对象了。5)、对象属性的引用 对象属性的引用可由下列三种方式之一实现:(1)使用点(.)运算符university.name=”云南省”;university.city=”昆明市”;university.date=”1999” ;其中university是一个已经存在的对象,name、city、date是它的三个属性,并通过操作对其赋值。(2)声明属性的时候用下标,可以通过对象的下标实现引用属性university0=”云南省”;university1=”昆明市”;unive
13、rsity2=”1999”;通过数组形式的访问属性,可以使用循环操作获取其值。 .function people(name,sex,age) /下面这种方式定义属性,可以通过“for(var j=0;2;j+)”循环取属性 this0=name; this1=sex; this2=age;var object =new people(function showuniversity(object)document.write(objectj) .若采用for.in则可以不知其属性的个数后就可以实现:声明属性的时候通过下标来声明 /下面方式定义属性,可以通过“for(var prop in obj
14、ect)”循环取属性 this0=name; /声明属性的时候用下标showmy(object);function showmy(object)for(var prop in object)/循环上面方式的对象,prop为下标docament.write(objectprop);注意:在使用该形式引用属性的时候,前提是声明属性的时候也要用下标(3)通过字符串的形式实现university“name”=“云南”university“city”=“昆明市”university“date”=1999(4)、1、document.form1.ordermc.value2、document.all.or
15、dermc.value3、document.all(“order.ordermc”).value /其中all(“”)是一个函数4、document.getElementsByName(order.ordermc)0.value;5、document.getElementById().value在javascript中声明数组一维数组var arr=new Array(3);/一维数组var arr=new Array(bc/一维数组(声明和数组的初始化一起进行)var arr=; var array=/不可以的二维数组在java当中 String ss=北京,2,上海,3,天津(1)在Jav
16、aScript当中不直接声明二维数组,但可以以下方式,即通过把一维数组的每个元素再声明成一个数组 var arr=new Array(3); arr0=new Array(/二维 arr1=new Array( arr2=new Array(取值alert(arr00); alert(arr01); alert(arr10); alert(arr11); alert(arr20); alert(arr21);循环取值 for(var i=0;iarr.length;i+) alert(arri0); alert(arri1);数据存放如下图1北京2上海3天津 (2)、还可以以以下方式直接声明二
17、维数组: var ss=,2,3,; alert(ss01+-+ss11); 注意:var ss=;/不能用该形式声明二维数组常用的基本函数 (1)、alert函数:显示一个警告对话框,包括一个确定按钮。(2)、confirm函数:显示一个确认对话框,包括OK、Cancel按钮。(3)、prompt函数:显示一个输入对话框,提示等待用户输入。例如:(4)、escape函数:将字符转换成Unicode码。(5)、unescape函数:解码由escape函数编码的字符。 var str=未来蓝图软件教育 var v=escape(str); alert(v); var v2=unescape(v)
18、; alert(v2);(6)、eval函数:计算表达式的结果。function add(v1,v2) var v3=v1+v2; alert(v3); return v3; alert(eval(add(1,2);(7)、isNaN函数:测试是(true)否(false)不是一个数字。 alert(isNaN(abc(8)、parseFloat函数:将字符串转换成浮点数字形式。(9)、parseInt函数:将符串转换成整数数字形式(可指定几进制)。JavaScript操作HTML的DOM树的方法与属性摘要Dom即Doucument Object Module1 createElement创建
19、一个指定标签名的新元素节点,返回值为指向新建元素节点的引用指针。eg) var para = document.createElement(pdocument.body.appendChild(para);/追加儿子2 createTextNode() 创建一个包含着给定文本的新文本节点,返回一个指向新建文本节点的引用指针:reference = document.createTextNode(“sdasdsas”) 参数为新建文本节点所包含的文本字符串 eg) var message = document.createTextNode(hello worldvar container = document.createElement(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1