JavaScript面向对象编程
许多Web开发人员对JavaScript的了解仅仅停留在简单的表单数据操作,以及浏览器DOM对象的简单操作上,以达到一些数据验证和动态页面的效果。所以当要实现的功能比较复杂时,写出的代码就显得凌乱并且难以维护,更不用说实现一个基于JavaScript的UI框架了。事实上,JavaScript 提供了完善的机制来实现面向对象的开发思想。
本章假设读者已经了解面向对象思想的基本概念,熟悉对象、类、继承等基本术语。以此为基础,将重点介绍如何在 JavaScript 中使用面向对象的思想,包括实现的原理、机制和技巧。我们将使用JavaScript来实现以下面向对象特性:
¾ 对象、类;
¾ 封装;
¾ 多态;
¾ 继承。
1.对象
在JavaScript中创建一个对象非常简单,我们可以使用内建的Object对象来创建一个对象:
var myObj=new Object; //创建一个名为myObj的对象
myObj.name='sam'; //给myObj对象添加一个name属性,其值为sam
myObj.age=28; //给myObj对象添加一个age属性,其值为28
我们也可以使用JSON(JavaScript Object Notation)[1] 来创建一个对象:
var myObj={name:’sam’,age:28}
//创建一个包含name属性值为sam,age属性值为28的对象
2.类
JavaScript不同于Java、C++、C#等面向对象语言,它通过构造函数和原型对象(prototype)来实现类的创建。为了创建一个类,还需要创建一个构造函数:
function Person(name,age){
this.name=name;
this.age=age;
}
这样我们就创建了一个构造函数(类),它包含两个属性:name和age。
var sam=new Person('sam',28); //创建一个Person对象,name为sam,age为28
我们可以通过“.”运算符来访问它的属性:
alert(sam.name); //输出结果为sam
var bob=new Person('bob',30); //创建一个Person对象,name为bob,age为30
alert(bob.age); //输出结果为30
细心的读者可能会发现,到目前为止,我们通过函数创建的对象只是封装了数据成员,并没有封装相应的方法。下面我们将在Person类中添加一个方法:
function Person(name,age){
this.name=name;
this.age=age;
this.introduceSelf=function(){
alert('I am '+name+' , I am '+age +' years old.');
}
}
var sam=new Person('sa
相关文档:
<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=gb2312'>
<TITLE>用按钮显示源代码或者javascript里面的内容,有时会有</TITLE>
</HEAD>
<BODY >
<script id=abc >
function dennisboys()
{
var i=0;
alert(document.documentElem ......
创建动态函数(在c/c++中利用函数指针来实现)
var FunctionName = new Function(argument1,...,lastargument);
说明:
所有的参数都必须是字符串类型的,最后的一个参数必须是这个动态函数的功能程序代码。
<script type="text/javascript">
& ......
<OBJECT id="ocx文件名" codeBase="ocx控件的相对位置#version=1,0,0,0"
data="data:application/xoleobject;base64,mRHW/Ifh3UqI5ZryOEhtERAHAAD/KgAAYSQAAA=="
classid="CLSID:通过MCP找到的classid" VIEWASTEXT>
</OBJECT>
Javascript调用OCX控件
什么是ocx控件?
对象链接和嵌入用户控件 ......
WEB 编程 - DHTML - 事件
onabort
当图片加载被中断时触发的事件
onactivate
当对象成为活性元素时触发的事件
onafterprint
当网页打印结束时触发的事件
onafterupdate
当对象的数据被成功修改之后而触发的事件
onbeforeactivate
当对象将要被设置成活动元素之前触发的事件
onbeforecopy
当网页被拷贝之前而 ......
事件源对象
event.srcElement.tagName
event.srcElement.type
捕获释放
event.srcElement.setCapture();
event.srcElement.releaseCapture();
事件按键
event.keyCode
event.shiftKey
event.altKey
event.ctrlKey
事件返回值
event.returnValue
鼠标位置
event.x
e ......