Archives

Archive for 2007-6

面向对象的JavaScript编程

javascript对于做过Web程序的人不应该是陌生,初期是用来做一些简单的FORM验证,基本上是在玩弄一些技巧性的东西。IE 4.0引入了 DHTML,同时为了对抗Netscape的javascript,提出了自己的脚本语言JScript,除了遵循EMAC的标准之外,同时增加了许多扩展,如下要提到的OOP编程就是其中的一个,为了命且概念,我以下提到的javascript都是 Microsoft Internet Explorer 4.0以上实现的JScript,对于Netscape,我没有做过太多的程序,所以一些的区别也就看出来。
javascript不是一个支持面向对象的语言,更加算不上一个开发平台,但是javascript提供了一个非常强大的基于 prototype的面向对象调用功能,你可以在你自己需要的地方使用他们。因此,如何使用对象?本文尽可能从javascript面向对象实现原理出发,解析清楚它的工作模型。在了解这些模型之后,你可以在自己的脚本库中编写一些实现代码,然后在其他地方调用。
javascript的语法和C++很接近,不过在类实现中没有使用关键字Class,实现继承的时候也没有采用传统的Public或者 Implement等等所谓的关键字来标示类的实现。这样的情况下,可能有就有人会问,如何编写javascript的Class,如何实现继承。我开始也是百思不得其解,后来看了MSDN,才知道采用了prototype来实现,包括继承和重载,也可以通过这个关键字来实现。
javascript的函数很奇怪,每个都是默认实现了Optional的,即参数都可以可选的,function a(var1,var2, var3),在调用的过程中a(),a(value1),a(value1,value2)等等的调用都是正确的,至少在即使编译部分可以完整通过,至于其它,只是和函数的实现逻辑比较相关了。
以下就JS对于类的实现、继承、重载详细介绍其实现方式。
1。实现
Js类的实现就通过函数直接实现的,每个函数可以直接看成class,如下代码

function ClassTest1(){

 

        …//implement code

 

    }

 

    var a=new ClassTest1

    function ClassTest2(var1){

 

    […]

一个Javascript获得浏览器相关尺寸的对象

一个Javascript获得浏览器相关尺寸的对象,可以获得浏览器窗口尺寸(窗口宽,窗口高,滚动高度),鼠标的位置(鼠标X坐标,鼠标Y坐标)。使用方便,兼容firefox。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns=“http://www.w3.org/1999/xhtml”>

<head>

<title></title>

<meta http-equiv=“Content-type” content=“text/html; charset=utf-8″ />

<meta name=“keywords” content=“,” />

<meta name=“description” content=“” />

<style type=“text/css”>

<!–

–>

</style>

<script language=“javascript” type=“text/javascript”>

//<![CDATA[

function getmXY(e){

        //鼠标位置

        if(!document.all){

                this.x=e.pageX;

                this.y=e.pageY;

        }else{

        […]

Javascript window.event 详解

描述
event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。event对象只在事件发生的过程中才有效。event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。
例子
下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。

<HTML>

<HEAD><TITLE>Cancels Links</TITLE>

<SCRIPT LANGUAGE=“JScript”>

function cancelLink() {

if (window.event.srcElement.tagName == "A" && window.event.shiftKey)

window.event.returnValue = false;

}

</SCRIPT>

<BODY onclick=“cancelLink()”>

下面的例子在状态栏上显示鼠标的当前位置。

<BODY onmousemove=“window.status = ‘X=’ + window.event.x + ‘ Y=’ + window.event.y”>

属性:
altKey, button, cancelBubble, clientX, clientY, ctrlKey, fromElement, keyCode, offsetX, offsetY, propertyName, returnValue, screenX, screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y
1.altKey描述:检查alt键的状态。
语法:event.altKey
可能的值:当alt键按下时,值为 TRUE […]