模仿jQuery,设计了一个缓存系统。像jQuery.data这样的东西,Prototype与mootools也有,目的都是用来辅助事件系统,用来缓存其中生成的数据,而非缓存普通函数上次计算的结果。Prototype利用了它的Hash类,mootools没细看,它内部好像用来缓存uuid。一个共识是,为页面用到的元素设置uuid非常有用,要查找元素时,可以避免重复查找,也可以用于与事件回调函数相绑定。由于uuid目前只有IE支持,它叫做uniqueID,格式为ms__id\d+,后面的数字也有名堂,叫做uniqueNumber。jQuery那个算是uniqueNumber吧,而且它的缓存系统非常复杂,支持缓存单个数据(利用data这个读写方法)与一组数据(利用queue,删除用dequeue)。没办法,因为它是白手起家,没有像Prototype那样利用一个自定数据类型分担一下职责。是时候进入正题,说一下我的缓存系统了。它利用到我的超级数组对象,实现像queue与dequeue。但我的超级数组对象能做的事更多,像filter,forEach,map,reduce,one,toObject,contains,remove等一应俱全。
dom.eventTypes = dom.array(String("abort blur change click contextmenu \
dblclick error focus keydown keypress keyup load mousedown ......
用call方法实现继承
function classA(sColor){
this.color=sColor;
this.sayColor=function(){
alert(this.color);
}
}
function classC(sColor,sName){
classA.call(this,sColor);
this.name=sName;
this.sayName=function(){
alert(this.name);
}
}
var obj1=new classC("red","jack");
obj1.sayColor();
obj1.sayName();
用apply方法实现继承
function classD(sColor,sName){
classA.apply(this,new Array(sColor));
this.name=sName;
this.sayName=function(){
alert(this.name);
}
} ......
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="Generator" content="Dreamweaver8" />
<meta name="Author" content="枫叶随风 QQ:455948725 E-mail:liukun615@126.com" />
<link rel="shortcut icon" href="http://www.fengyekun.com/favicon.ico" />
<title>JavaScript弹出菜单</title>
<style type="text/css">
<!--
* {font-family:"宋体", Arial, Helvetica, sans-serif; margin:0px; padding:0px; font-size:12px;}
#main {width:100%;}
#content {
margin-top:100px;
}
#navbg {
background:#CC0033;
}
#nav ......
<!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=gb2312" />
<meta name="Generator" content="Dreamweaver8" />
<meta name="Author" content="枫叶随风 QQ:455948725 E-mail:liukun615@126.com" />
<link rel="shortcut icon" href="http://www.fengyekun.com/favicon.ico" />
<style type="text/css">
<!--
body {font-family:"宋体", Arial, Helvetica, sans-serif; margin:0px; font-size:12px;}
#main {width:100%;}
#content {position:relative; top:50%; margin:-150px auto; width:500px; height:300px; border:1px solid #999;& ......
<script language="javascript" type="text/javascript">
var TempTime=new Date().getTime();
function StayTime(){
var NowTime=new Date().getTime();
var Time=NowTime-TempTime;
var Days=Math.floor(Time/(24*60*60*1000));
Time-=Days*24*60*60*1000;
var Hours=Math.floor(Time/(60*60*1000));
Time-=Hours*60*60*1000;
var Minutes=Math.floor(Time/(60*1000));
Time-=Minutes*60*1000;
var Seconds=Math.floor(Time/1000);
alert("您在本页面停留了:"+String(Days)+"天"+String(Hours)+"时"+String(Minutes)+"分"+String(Seconds)+"秒");
}
</script>
<body onunload="StayTime();">
实例演示:http://www.fengyekun.com/Study_711.html ......
前台利用javascript解析Json数据,生成编码折线,因为利用浏览器解析,数据量大的情况下,会锁定浏览器,脚本执行太慢。
package unit;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import net.sf.json.JSONArray;
/**
* 解析KML文件,获取特定线路站点经纬度
* 此类用于前台JS生成编码折线
* 解析此类格式
* * <coordinates>
114.603325, 37.427359, 50.90
114.604025, 37.428438, 50.90
114.599972, 37.525815, 29.90
114.598970, 37.535222, 33.40
114.589994, 37.617946, 34.80
114.589880, 37.618956, 35.20
114.579965, 37.694322, 39.40
114.579317, 37.695190, 40.30
114.569753, 37.708272, 42.60
114.5691 ......