javascript基础知识大全 便于大家学习也便于我自己查看.docx
《javascript基础知识大全 便于大家学习也便于我自己查看.docx》由会员分享,可在线阅读,更多相关《javascript基础知识大全 便于大家学习也便于我自己查看.docx(35页珍藏版)》请在冰豆网上搜索。
![javascript基础知识大全 便于大家学习也便于我自己查看.docx](https://file1.bdocx.com/fileroot1/2023-2/1/582bc723-e8e8-4ae1-ad05-b5d7cd77a6c4/582bc723-e8e8-4ae1-ad05-b5d7cd77a6c41.gif)
javascript基础知识大全便于大家学习也便于我自己查看
1.javascript的数组API
复制代码代码如下:
//定义数组
varpageIds=newArray();
pageIds.push('A');
数组长度
pageIds.length;
//shift:
删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined
vara=[1,2,3,4,5];
varb=a.shift();//a:
[2,3,4,5]b:
1
//unshift:
将参数添加到原数组开头,并返回数组的长度
vara=[1,2,3,4,5];
varb=a.unshift(-2,-1);//a:
[-2,-1,1,2,3,4,5]b:
7
//注:
在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法的返回值不可靠,需要用返回值时可用splice代替本方法来使用。
//pop:
删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined
vara=[1,2,3,4,5];
varb=a.pop();//a:
[1,2,3,4]b:
5
//push:
将参数添加到原数组末尾,并返回数组的长度
vara=[1,2,3,4,5];
varb=a.push(6,7);//a:
[1,2,3,4,5,6,7]b:
7
//concat:
返回一个新数组,是将参数添加到原数组中构成的
vara=[1,2,3,4,5];
varb=a.concat(6,7);//a:
[1,2,3,4,5]b:
[1,2,3,4,5,6,7]
//splice(start,deleteCount,val1,val2,):
从start位置开始删除deleteCount项,并从该位置起插入val1,val2,
vara=[1,2,3,4,5];
varb=a.splice(2,2,7,8,9);//a:
[1,2,7,8,9,5]b:
[3,4]
varb=a.splice(0,1);//同shift
a.splice(0,0,-2,-1);varb=a.length;//同unshift
varb=a.splice(a.length-1,1);//同pop
a.splice(a.length,0,6,7);varb=a.length;//同push
//reverse:
将数组反序
vara=[1,2,3,4,5];
varb=a.reverse();//a:
[5,4,3,2,1]b:
[5,4,3,2,1]
//sort(orderfunction):
按指定的参数对数组进行排序
vara=[1,2,3,4,5];
varb=a.sort();//a:
[1,2,3,4,5]b:
[1,2,3,4,5]
//slice(start,end):
返回从原数组中指定开始下标到结束下标之间的项组成的新数组
vara=[1,2,3,4,5];
varb=a.slice(2,5);//a:
[1,2,3,4,5]b:
[3,4,5]
//join(separator):
将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符
vara=[1,2,3,4,5];
varb=a.join("|");//a:
[1,2,3,4,5]b:
"1|2|3|4|5"
2.dom最常用API
复制代码代码如下:
document方法:
getElementById(id)Node返回指定结点的引用
getElementsByTagName(name)NodeList返回文档中所有匹配的元素的集合
createElement(name)NodeNode
createTextNode(text)Node创建一个纯文本结点
ownerDocumentDocument指向这个节点所属的文档
documentElementNode返回html节点
document.bodyNode返回body节点
element方法:
getAttribute(attributeName)String返回指定属性的值
setAttribute(attributeName,value)String给属性赋值
removeAttribute(attributeName)String移除指定属性和它的值
getElementsByTagName(name)NodeList返回结点内所有匹配的元素的集合
node方法:
appendChild(child)Node给指定结点添加一个新的子结点
removeChild(child)Node移除指定结点的子结点
replaceChild(newChild,oldChild)Node替换指定结点的子结点
insertBefore(newChild,refChild)Node在同一层级的结点前面插入新结点
hasChildNodes()Boolean如果结点有子结点则返回true
node属性:
nodeNameString以字符串的格式存放结点的名称
nodeTypeString以整型数据格式存放结点的类型
nodeValueString以可用的格式存放结点的值
parentNodeNode指向结点的父结点的引用
childNodesNodeList指向子结点的引用的集合
firstChildNode指向子结点结合中的第一个子结点的引用
lastChildNode指向子结点结合中的最后一个子结点的引用
previousSiblingNode指向前一个兄弟节点;如果这个节点就是兄弟节点,那么该值为null
nextSiblingNode指向后一个兄弟节点;如果这个节点就是兄弟节点,那么该值为null
3.网上搜藏的一个map对象:
复制代码代码如下:
functionHashMap()
{
/**Map大小**/
varsize=0;
/**对象**/
varentry=newObject();
/**存**/
this.put=function(key,value)
{
if(!
this.containsKey(key))
{
size++;
}
entry[key]=value;
}
/**取**/
this.get=function(key)
{
returnthis.containsKey(key)?
entry[key]:
null;
}
/**删除**/
this.remove=function(key)
{
if(this.containsKey(key)&&(deleteentry[key]))
{
size--;
}
}
/**是否包含Key**/
this.containsKey=function(key)
{
return(keyinentry);
}
/**是否包含Value**/
this.containsValue=function(value)
{
for(varpropinentry)
{
if(entry[prop]==value)
{
returntrue;
}
}
returnfalse;
}
/**所有Value**/
this.values=function()
{
varvalues=newArray();
for(varpropinentry)
{
values.push(entry[prop]);
}
returnvalues;
}
/**所有Key**/
this.keys=function()
{
varkeys=newArray();
for(varpropinentry)
{
keys.push(prop);
}
returnkeys;
}
/**MapSize**/
this.size=function()
{
returnsize;
}
/*清空*/
this.clear=function()
{
size=0;
entry=newObject();
}
}
varmap=newHashMap();
/*
map.put("A","1");
map.put("B","2");
map.put("A","5");
map.put("C","3");
map.put("A","4");
*/
/*
alert(map.containsKey("XX"));
alert(map.size());
alert(map.get("A"));
alert(map.get("XX"));
map.remove("A");
alert(map.size());
alert(map.get("A"));
*/
/**同时也可以把对象作为Key**/
/*
vararrayKey=newArray("1","2","3","4");
vararrayValue=newArray("A","B","C","D");
map.put(arrayKey,arrayValue);
varvalue=map.get(arrayKey);
for(vari=0;i{
//alert(value[i]);
}
*/
/**把对象做为Key时,自动调用了该对象的toString()方法其实最终还是以String对象为Key**/
/**如果是自定义对象那自己得重写toString()方法否则.就是下面的结果**/
functionMyObject(name)
{
this.name=name;
}
/**
functionMyObject(name)
{
this.name=name;
this.toString=function()
{
returnthis.name;
}
}
**/
varobject1=newMyObject("小张");
varobject2=newMyObject("小名");
map.put(object1,"小张");
map.put(object2,"小名");
alert(map.get(object1));
alert(map.get(object2));
map.remove("xxxxx");
alert(map.size());
/**运行结果小名小名size=1**/
/**如果改成复写toString()方法的对象,效果就完全不一样了**/
4.常用的数字函数:
复制代码代码如下:
·数字型(Number)
1.声明
vari=1;
vari=newNumber
(1);
2.字符串与数字间的转换
vari=1;
varstr=i.toString();//结果:
"1"
varstr=newString(i);//结果:
"1"
i=parseInt(str);//结果:
1
i=parseFloat(str);//结果:
1.0
//注意:
parseInt,parseFloat会把一个类似于"32G"的字符串,强制转换成32
3.判断是否为有效的数字
vari=123;varstr="string";
if(typeofi=="number"){}//true
//某些方法(如:
parseInt,parseFloat)会返回一个特殊的值NaN(NotaNumber)
//请注意第2点中的[注意],此方法不完全适合判断一个字符串是否是数字型!
!
i=parseInt(str);
if(isNaN(i)){}
4.数字型比较
//此知识与[字符串比较]相同
5.小数转整数
varf=1.5;
vari=Math.round(f);//结果:
2(四舍五入)
vari=Math.ceil(f);//结果:
2(返回大于f的最小整数)
vari=Math.floor(f);//结果:
1(返回小于f的最大整数)
6.格式化显示数字
vari=3.14159;
//格式化为两位小数的浮点数
varstr=i.toFixed
(2);//结果:
"3.14"
//格式化为五位数字的浮点数(从左到右五位数字,不够补零)
varstr=i.toPrecision(5);//结果:
"3.1415"
7.X进制数字的转换
//不是很懂-.-
vari=parseInt("0x1f",16);
vari=parseInt(i,10);
vari=parseInt("11010011",2);
8.随机数
//返回0-1之间的任意小数
varrnd=Math.random();
//返回0-n之间的任意整数(不包括n)
varrnd=Math.floor(Math.random()*n)
5.网上搜藏的js堆栈:
复制代码代码如下:
functionstack(){
if(this.top==undefined){
//初始化堆栈的顶部指针和数据存放域
this.top=0;
this.unit=newArray();
}
this.push=function(pushvalue){
//定义压入堆栈的方法
this.unit[this.top]=pushvalue;
this.top+=1;
}
this.readAllElements=function(){
//定义读取所有数据的方法
if(this.top==0){
alert("当前栈空,无法读取数据");
return("");
}
varcount=0;
varoutStr="";
for(count=0;countoutStr+=this.unit[count]+",";
}
return(outStr);
}
this.pop=function(){
//定义弹出堆栈的方法
if(this.top==0){
alert("当前栈空,无法弹出数据");
return("");
}
varpopTo=this.unit[this.top-1];
this.top--;
return(popTo);
/*从堆栈弹出数据,顶部指针减一,不过这里没有做到资源的释放,也
就是说数据仍然存在于this.unit的数组中,只不过无法访问罢了。
目前
我也没想到好的办法解决。
*/
}
}
6.最常用的JavaScript日期函数:
复制代码代码如下:
·日期型(Date)
1.声明
varmyDate=newDate();//系统当前时间
varmyDate=newDate(yyyy,mm,dd,hh,mm,ss);
varmyDate=newDate(yyyy,mm,dd);
varmyDate=newDate("monthNamedd,yyyyhh:
mm:
ss");
varmyDate=newDate("monthNamedd,yyyy");
varmyDate=newDate(epochMilliseconds);
2.获取时间的某部份
varmyDate=newDate();
myDate.getYear();//获取当前年份(2位)
myDate.getFullYear();//获取完整的年份(4位,1970-)
myDate.getMonth();//获取当前月份(0-11,0代表1月)
myDate.getDate();//获取当前日(1-31)
myDate.getDay();//获取当前星期X(0-6,0代表星期天)
myDate.getTime();//获取当前时间(从1970.1.1开始的毫秒数)时间戳!
!
myDate.getHours();//获取当前小时数(0-23)
myDate.getMinutes();//获取当前分钟数(0-59)
myDate.getSeconds();//获取当前秒数(0-59)
myDate.getMilliseconds();//获取当前毫秒数(0-999)
myDate.toLocaleDateString();//获取当前日期
myDate.toLocaleTimeString();//获取当前时间
myDate.toLocaleString();//获取日期与时间
3.计算之前或未来的时间
varmyDate=newDate();
myDate.setDate(myDate.getDate()+10);//当前时间加10天
//类似的方法都基本相同,以set开头,具体参考第2点
4.计算两个日期的偏移量
vari=daysBetween(beginDate,endDate);//返回天数
vari=beginDate.getTimezoneOffset(endDate);//返回分钟数
5.检查有效日期
//checkDate()只允许"mm-dd-yyyy"或"mm/dd/yyyy"两种格式的日期
if(checkDate("2006-01-01")){}
//正则表达式(自己写的检查yyyy-mm-dd,yy-mm-dd,yyyy/mm/dd,yy/mm/dd四种)
varr=/^(\d{2}|\d{4})[\/-]\d{1,2}[\/-]\d{1,2}$/;
if(r.test(myString)){}
7.最常用字符串函数API:
复制代码代码如下:
·字符串(String)
1.声明
varmyString=newString("Everygoodboydoesfine.");
varmyString="Everygoodboydoesfine.";
2.字符串连接
varmyString="Every"+"goodboy"+"doesfine.";
varmyString="Every";myString+="goodboydoesfine.";
3.截取字符串
//截取第6位开始的字符
varmyString="Everygoodboydoesfine.";
varsection=myString.substring(6);//结果:
"goodboydoesfine."
//截取第0位开始至第10位为止的字符
varmyString="Everygoodboydoesfine.";
varsection=myString.substring(0,10);//结果:
"Everygood"
//截取从第11位到倒数第6位为止的字符
varmyString="Everygoodboydoesfine.";
varsection=myString.slice(11,-6);//结果:
"boydoes"
//从第6位开始截取长度为4的字符
varmyString="Everygoodboydoesfine.";
varsection=myString.substr(6,4);//结果:
"good"
4.转换大小写
varmyString="Hello";
varlcString=myString.toLowerCase();//结果:
"hello"
varucString=myString.toUpperCase();//结果:
"HELLO"
5.字符串比较
varaString="Hello!
";
varbString=newString("Hello!
");
if(aString=="Hello!
"){}//结果:
true
if(aString==bString){}//结果:
true
if(aString===bString){}//结果:
false(两个对象不同,尽管它们的值相同)
6.检索字符串
varmyString="helloeverybody.";
//如果检索不到会返回-1,检索到的话返回在该串中的起始位置
if(myString.indexOf("every")>-1){}//结果:
true
7.查找替换字符串
varmyString="Iisyourfather.";
varresult=myString.replace("is","am");//结果:
"Iamyourfather."
8.特殊字符:
\b:
后退符\t:
水平制表符
\n:
换行符\v:
垂直制表符
\f:
分页符\r:
回车符
\":
双引号\':
单引号
\\:
反斜杆
9.将字符转换成Unicode编码
varmyString="hello";
varcode=myString.charCodeAt(3);//返回"l"的Unicode编码(整型)
varchar=String.fromCharCode(66);//返回Unicode为66的字符
10.将字符串转换成