js的点点滴滴

时间:2021-05-25 16:44:07

有关于JS的东西太多,也太杂了。总是想记下来,但总是以一些自以为是的理由来搪塞自己。今天总是下了点决心,先记下这点吧。以后有了随时更新。

1、js静态类
定义方法
var classname=
{
}
成员定义方法
每个成员由逗号分隔开(除最后一个成员)
对于成员变量,通常的定义方法为:
m_varname:value
对于成员函数,通常的定义方法为:
fnname:function(parameter)
{
}

另外,在静态类,可以直接使用外部的函数或者变量。但如果要引用静态类的成员,需要指出静态类的类名,如:staticClassName.member = value;即使是在同一个静态类中。

2、使用setTimeout函数传递对象:
var expFun=function(){OperationTime.SetShowTimerInfo(obj)};
  window.setTimeout(expFun,1000);

现在我吸取网上其它大大的经验,已经将它稍稍改进了一些。重写了一下window.setTimeout函数。

js的点点滴滴var  _st_fun  =  window.setTimeout;
js的点点滴滴js的点点滴滴window.setTimeout 
= function (fRef,mDelay) {
js的点点滴滴js的点点滴滴    
if(typeof fRef == 'function'){
js的点点滴滴        
var context = this;
js的点点滴滴        
var argus = Array.prototype.splice.call(arguments,2);
js的点点滴滴js的点点滴滴        
var fun=function(){
js的点点滴滴            fRef.apply(context,argus);
js的点点滴滴        }

js的点点滴滴        
return _st_fun(fun,mDelay);
js的点点滴滴    }

js的点点滴滴    
return _st_fun(fRef,mDelay);
js的点点滴滴}
调用的时候,直接将要传递的参数按顺序放在参数列表中即可。

window.setTimeout的原型

iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])

一般情况下,第三个参数(语言)没有什么用处,默认是javascript,所以在重载的时候将它放弃了。

调用如下:

js的点点滴滴var  dealyinvoke = function (matchError)
js的点点滴滴js的点点滴滴
{
js的点点滴滴    
this.processError(matchError);
js的点点滴滴}

js的点点滴滴
var  obj  =   this ;
js的点点滴滴window.setTimeout.call(obj,dealyinvoke,parseInt(matchError.Try[
0 ].Time) * 1000 ,matchError);

这是我的程序里面使用到的一个调用示例。由于我是面向对象编程,这个processError函数是当前对象中的一个成员。所以在回调中,我还是需要当前上下文的引用,所以使用的call来完成的调用。第一个参数将当前上下文通过call传递进去(如果对call或者apply的使用不明白,说明你和我一样,功力还欠缺火候,赶快补习一下)

当前也可以直接调用的,就如没有重写一样。如果回调函数中不需要上下文,可以直接调用。如下:

js的点点滴滴var dealyinvoke=function(matchError)
js的点点滴滴js的点点滴滴
{
js的点点滴滴   
processError(matchError);
js的点点滴滴}


js的点点滴滴window.setTimeout(dealyinvoke,parseInt(matchError.Try[
0].Time)*1000,matchError);



3、检查Access数据表中是否存在某字段(列)

js的点点滴滴// ===============================/
js的点点滴滴//
检查数据表中是否存在列
js的点点滴滴//
strTableName        表名
js的点点滴滴//
strColumnName        列名
js的点点滴滴//
=============================/
js的点点滴滴
function  fnColumnIsExists(tablename,columname)
js的点点滴滴js的点点滴滴
{
js的点点滴滴    
var blnExists = false;
js的点点滴滴    
try
js的点点滴滴js的点点滴滴    
{
js的点点滴滴        
var rstPbase;
js的点点滴滴        rstPbase 
= g_objAnalyConn.OpenSchema(4new Array(nullnull,tablename,columname));
js的点点滴滴        blnExists 
= rstPbase.recordCount >0;
js的点点滴滴        rstPbase.Close();
js的点点滴滴        
delete rstPbase;
js的点点滴滴    }

js的点点滴滴    
catch (e)
js的点点滴滴js的点点滴滴    
{
js的点点滴滴        //showErrorInfo(
"模块名称:QuestionTimer[fnColumnIsExists]\n详细信息:" + e.description);
js的点点滴滴        
//alert(e.description);
js的点点滴滴
    }

js的点点滴滴    
return blnExists;
js的点点滴滴}

上面函数中,如果把rstPbase = g_objAnalyConn.OpenSchema(4, new Array(null, null,tablename,columname));中的columname如果为null的话,那返回的数据集就是所有字段名(列名)的一个集合。当然查询语句也要作出相应的调整。


4、有关于类的创建,精妙的语法。

js的点点滴滴js的点点滴滴var  Class  =   {
js的点点滴滴js的点点滴滴    create: 
function () {
js的点点滴滴js的点点滴滴        
return function () {
js的点点滴滴            
this.initialize.apply(this, arguments);
js的点点滴滴        }
;
js的点点滴滴    }

js的点点滴滴}
;
js的点点滴滴
var  StringBuilder  =  Class.create();
js的点点滴滴js的点点滴滴StringBuilder.prototype 
=   {
js的点点滴滴js的点点滴滴    initialize : 
function( str ) {
js的点点滴滴        
this._strings_ = new Array;
js的点点滴滴        
if ( str ) this.append(str);
js的点点滴滴    }
,
js的点点滴滴js的点点滴滴    append : 
function ( str ) {
js的点点滴滴        
this._strings_.push ( str );
js的点点滴滴    }
,
js的点点滴滴js的点点滴滴    ToString : 
function () {
js的点点滴滴        
return this._strings_.join ( "" );
js的点点滴滴    }
,
js的点点滴滴js的点点滴滴    Clear : 
function () {
js的点点滴滴        
return this._strings_.splice (0,this._strings_.length);
js的点点滴滴    }

js的点点滴滴}

js的点点滴滴js的点点滴滴
function  classtest() {
js的点点滴滴    
var sb=new StringBuilder("ad");
js的点点滴滴}

5、Json对象
以我看来,Json和第一条提到的静态类,基本上是同一个东西,只不过静态类里面比JSON多了一些成员函数而已。它们的本质还是相同的。现在也说不清它们两者之间是先有鸡还是先有蛋的。亦或者是同时就存在了的。
var json={title:"标题",content:"内容"};
它们都是以{}为声明标记,内部以,分隔。并且每一个成员都是以:来区分名称和内容。
比如:json.title 这时,如果要调试输出的话,输出来的是字符串"标题".
同时,也可以把上面的json看作是一个静态类,只不过这个静态类,徒有虚表而已。是一个只有属性变量 ,没有成员函数的静态类。

json声明时,还可以加入数组。如下:
json={title:"标题",content:"内容",category:["章节一","Javascript","客户端脚本"]};
如果alert(json.category),输出的将是:章节一,Javascript,客户端脚本。

同时,在json内部,还可以存在json子集。如下:
var json={title:"标题",content:"内容",category:{name0:"章节一",name1:"Javascript",name2:"客户端脚本"}};
如果alert(json.category。name2),输出的将是:客户端脚本。

6、给string对象扩充的方法

js的点点滴滴js的点点滴滴String.prototype.format = function () {
js的点点滴滴    Array.prototype.unshift.call(arguments,
this);
js的点点滴滴    
return String.format.apply(null,arguments);
js的点点滴滴}

js的点点滴滴js的点点滴滴String.format 
=   function () {
js的点点滴滴    
if(arguments.length == 0)return "";    
js的点点滴滴    
var str = arguments[0];
js的点点滴滴js的点点滴滴    
for(var index=0;index<arguments.length;index++){      
js的点点滴滴        
var re = new RegExp('\\{' + (index) + '\\}','gm');
js的点点滴滴        str 
= str.replace(re, arguments[index+1]);
js的点点滴滴    }

js的点点滴滴    
return str
js的点点滴滴}