js 函数集
·
字符串
(String)
1.
声明
var myString = new String("Every good boy does fine.");
var myString = "Every good boy does fine.";
2.
字符串连接
var myString = "Every " + "good boy " + "does
fine.";
var myString = "Every "; myString += "good boy does fine.";
3.
截取字符串
//
截取第
6
位开始的字符
var myString = "Every good boy does fine.";
var section = myString.substring(6); //
结果
: "good boy does
fine."
//
截取第
0
位开始至第
10
位为止的字符
var myString = "Every good boy does fine.";
var section = myString.substring(0,10); //
结果
: "Every good"
//
截取从第
11
位到倒数第
6
位为止的字符
var myString = "Every good boy does fine.";
var section = myString.slice(11,-6); //
结果
: "boy does"
//
从第
6
位开始截取长度为
4
的字符
var myString = "Every good boy does fine.";
var section = myString.substr(6,4); //
结果
: "good"
4.
转换大小写
var myString = "Hello";
var lcString = myString.toLowerCase(); //
结果
: "hello"
var ucString = myString.toUpperCase(); //
结果
: "HELLO"
5.
字符串比较
var aString = "Hello!";
var bString = new String("Hello!");
if( aString == "Hello!" ){ } //
结果
: true
if( aString == bString ){ } //
结果
: true
if( aString === bString ){ } //
结果
: false (
两个对象不同
,
尽管它们的值相同
)
6.
检索字符串
var myString = "hello everybody.";
//
如果检索不到会返回
-1,
检索到的话返回在该串中的起始位置
if( myString.indexOf("every") > -1 ){ } //
结果
: true
7.
查找替换字符串
var myString = "I is your father.";
var result = myString.replace("is","am"); //
结果
:
"I am your father."
8.
特殊字符
:
\b :
后退符
\t :
水平制表符
\n :
换行符
\v :
垂直制表符
\f :
分页符
\r :
回车符
\" :
双引号
\' :
单引号
\\ :
反斜杆
9.
将字符转换成
Unicode
编码
var myString = "hello";
var code = myString.charCodeAt(3); //
返回
"l"
的
Unicode
编码
(
整型
)
var char = String.fromCharCode(66); //
返回
Unicode
为
66
的字符
10.
将字符串转换成
URL
编码
var myString = "hello all";
var code = encodeURI(myString); //
结果
: "hello%20all"
var str = decodeURI(code); //
结果
: "hello all"
//
相应的还有
:
encodeURIComponent() decodeURIComponent()
11.
将字符串转换成
base64
编码
// base64Encode() base64Decode()
用法同上
//-----------------------------------------------------------------------
· 数字型 (Number)
1.
声明
var i = 1;
var i = new Number(1);
2.
字符串与数字间的转换
var i = 1;
var str = i.toString(); //
结果
: "1"
var str = new String(i); //
结果
: "1"
i = parseInt(str); //
结果
: 1
i = parseFloat(str); //
结果
: 1.0
// 注意 : parseInt,parseFloat 会把一个类似于 "32G" 的字符串 , 强制转换成 32
3.
判断是否为有效的数字
var i = 123; var str = "string";
if( typeof i == "number" ){ } //true
//
某些方法
(
如
:parseInt,parseFloat)
会返回一个特殊的值
NaN(Not
a Number)
//
请注意第
2
点中的
[
注意
],
此方法不完全适合判断一个字符串是否是数字型
!!
i = parseInt(str);
if( isNaN(i) ){ }
4.
数字型比较
//
此知识与
[
字符串比较
]
相同
5.
小数转整数
var f = 1.5;
var i = Math.round(f); //
结果
:2 (
四舍五入
)
var i = Math.ceil(f); //
结果
:2 (
返回大于
f
的最小整数
)
var i = Math.floor(f); //
结果
:1 (
返回小于
f
的最大整数
)
6.
格式化显示数字
var i = 3.14159;
//
格式化为两位小数的浮点数
var str = i.toFixed(2); //
结果
: "3.14"
//
格式化为五位数字的浮点数
(
从左到右五位数字
,
不够补零
)
var str = i.toPrecision(5); //
结果
: "3.1415"
7.X
进制数字的转换
//
不是很懂
-.-
var i = parseInt("0x1f",16);
var i = parseInt(i,10);
var i = parseInt("11010011",2);
8.
随机数
//
返回
0-1
之间的任意小数
var rnd = Math.random();
//
返回
0-n
之间的任意整数
(
不包括
n)
var rnd = Math.floor(Math.random() * n)
//-----------------------------------------------------------------------
·Math 对象
1. Math.abs(num) :
返回
num
的绝对值
2. Math.acos(num) :
返回
num
的反余弦值
3. Math.asin(num) :
返回
num
的反正弦值
4. Math.atan(num) :
返回
num
的反正切值
5. Math.atan2(y,x) :
返回
y
除以
x
的商的反正切值
6. Math.ceil(num) :
返回大于
num
的最小整数
7. Math.cos(num) :
返回
num
的余弦值
8. Math.exp(x) :
返回以自然数为底
,x
次幂的数
9. Math.floor(num) :
返回小于
num
的最大整数
10.Math.log(num) :
返回
num
的自然对数
11.Math.max(num1,num2) :
返回
num1
和
num2
中较大的一个
12.Math.min(num1,num2) :
返回
num1
和
num2
中较小的一个
13.Math.pow(x,y) :
返回
x
的
y
次方的值
14.Math.random() :
返回
0
到
1
之间的一个随机数
15.Math.round(num) :
返回
num
四舍五入后的值
16.Math.sin(num) :
返回
num
的正弦值
17.Math.sqrt(num) :
返回
num
的平方根
18.Math.tan(num) :
返回
num
的正切值
19.Math.E :
自然数
(2.718281828459045)
20.Math.LN2 : 2
的自然对数
(0.6931471805599453)
21.Math.LN10 : 10
的自然对数
(2.302585092994046)
22.Math.LOG2E : log 2
为底的自然数
(1.4426950408889634)
23.Math.LOG10E : log 10
为底的自然数
(0.4342944819032518)
24.Math.PI : π(3.141592653589793)
25.Math.SQRT1_2 : 1/2
的平方根
(0.7071067811865476)
26.Math.SQRT2 : 2
的平方根
(1.4142135623730951)
//-----------------------------------------------------------------------
· 日期型 (Date)
1.
声明
var myDate = new Date(); //
系统当前时间
var myDate = new Date(yyyy,
mm, dd, hh, mm, ss);
var myDate = new Date(yyyy, mm, dd);
var myDate = new Date("monthName dd, yyyy hh:mm:ss");
var myDate = new Date("monthName dd, yyyy");
var myDate = new Date(epochMilliseconds);
2.
获取时间的某部份
var myDate = new Date();
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.
计算之前或未来的时间
var myDate = new Date();
myDate.setDate(myDate.getDate() + 10); //
当前时间加
10
天
//
类似的方法都基本相同
,
以
set
开头
,
具体参考第
2
点
4.
计算两个日期的偏移量
var i = daysBetween(beginDate,endDate); //
返回天数
var i = 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
四种
)
var r = /^(\d{2}|\d{4})[\/-]\d{1,2}[\/-]\d{1,2}$/;
if( r.test( myString ) ){ }
//-----------------------------------------------------------------------
· 数组 (Array)
1.
声明
var arr = new Array(); //
声明一个空数组
var arr = new Array(10); //
声明一个
10
个长度的数组
var arr = new Array("Alice", "Fred", "Jean"); //
用值初始化数组
var arr = ["Alice", "Fred", "Jean"]; //
用值初始化数组
var arr = [["A","B","C"][1,2,3]]; //
声明一个二
(
多
)
维数组
2.
数组的访问
arr[0] = "123"; //
赋值
var str = arr[0]; //
获取
arr[0][0] = "123"; //
多维数组赋值
3.
数组与字符串间的转换
var arr = ["A","B","C","D"]; //
声明
//
数组按分隔符转换成字符串
var str = arr.join("|"); //
结果
: "A|B|C|D"
//
字符串切割成数组
arr = str.split("|");
4.
遍历数组
for( var i=0; i<arr.length; i++ ){ alert(arr[i]); }
5.
排序
var arr = [12,15,8,9];
arr.sort(); //
结果
: 8 9
12 15
6.
组合与分解数组
var arr1 = ["A","B","C","D"];
var arr2 = ["1","2","3","4"];
//
奖两个数组组合成一个新的数组
var arr = arr1.concat(arr2); //
结果
: ["A","B","C","D","1","2","3","4"]
//
将一个数组切成两个数组
(
参数
1:
起始索引
,
参数
2:
切割长度
)
var arr3 = arr.splice(1,3); //
结果
: arr3:["B","C","D"]
arr["A","1","2","3","4"]
//
将一个数组切成两个数组
,
并在原数组补新值
var arr4 = arr.splice(1,3,"AA"); //
结果
:
arr4:["B","C","D"]
arr["A","AA","1","2","3","4"]
//-----------------------------------------------------------------------
· 自定义对象
1.
声明
:
function myUser(uid,pwd){
this.uid = uid;
this.pwd = pwd || "000000"; //
默认值
this.show = showInfo; //
方法
}
//
下面的函数不是自定义对象
,
是自定义对象的方法
.
继续看下去就明白了
function showInfo(){
alert("
用户名
:"
+ this.uid + ",
密码
:" + this.pwd)
}
2.
实例化
:
var user = new myUser("user","123456");
var user = {uid:"user",pwd:"123456"};
3.
获取与设置
alert("
用户名是
:"
+ user.uid); //get
user.uid = "newuser"; //set
user.show(); //
调用
show()
方法
//-----------------------------------------------------------------------
· 变量 函数 流程控制
1.
变量
var i = 1;
var i = 1, str = "hello";
2.
函数
function funName(){
//do something.
}
function funName(param1[,paramX]){
//do something.
}
3.
嵌套函数
//
某种情况
,
你需要创建一个函数本身所独有的函数
.
function myFunction(){
//do something.
privateFunction();
function privateFunction(){
//do something.
}
}
4.
匿名函数
var tmp = function(){ alert("only test."); }
tmp();
5.
延迟函数调用
var tId = setTimeout("myFun()",1000); //
延迟
1000
毫秒后再调用
myFun()
函数
fucntion myFun(){
//do something
clearTimeout(tId); //
销毁对象
}
6.
流程控制
if( condition ){ }
if( condition ){ } else{ }
if( condition ){ } else if( condition ){ } else{ }
switch( expression ){
case valA : statement; break;
case valB : statement; break;
default : statement; break;
}
7.
异常捕获
try{ expression } catch(e){ } finally{ }
//
不处理任何异常
window.onerror = doNothing;
function doNothing(){ return true; }
//
异常类可用的属性
description :
异常描述
(IE,NN)
fileName :
异常页面
URI(NN)
lineNumber :
异常行数
(NN)
message :
异常描述
(IE,NN)
name :
错误类型
(IE,NN)
number :
错误代码
(IE)
//
错误信息
(
兼容所有浏览器
)
try{ }
catch(e){
var msg = (e.message) ? e.message : e.description;
alert(msg);
}
8.
加快脚本的执行速度
-
避免使用
eval()
函数
-
避免使用
with
关键字
-
将重复的表达式赋值精简到最小
-
在较大的对象中使用索引来查找数组
-
减少
document.write()
的使用
//-----------------------------------------------------------------------
· 浏览器特征 ( navigator )
1.
浏览器名称
//IE : "Microsoft Internet Explorer"
//NS : "Netscape"
var browserName = navigator.appName;
2.
浏览器版本
bar browserVersion = navigator.appVersion;
3.
客户端操作系统
var isWin = ( navigator.userAgent.indexOf("Win") != -1 );
var isMac = ( navigator.userAgent.indexOf("Mac") != -1 );
var isUnix = ( navigator.userAgent.indexOf("X11") != -1 );
4.
判断是否支持某对象
,
方法
,
属性
//
当一个对象
,
方法
,
属性未定义时会返回
undefined
或
null
等
,
这些特殊值都是
false
if( document.images ){ }
if( document.getElementById ){ }
5.
检查浏览器当前语言
if( navigator.userLanguage ){ var l = navigator.userLanguage.toUpperCase(); }
6.
检查浏览器是否支持
Cookies
if( navigator.cookieEnabled ){ }
//-----------------------------------------------------------------------
· 控制浏览器窗口 ( window )
1.
设置浏览器的大小
window.resizeTo(800, 600); //
将浏览器调整到
800X600
大小
window.resizeBy(50, -10); //
在原有大小上改变增大或减小窗口大小
2.
调整浏览器的位置
window.moveTo(10, 20); //
将浏览器的位置定位到
X:10 Y:20
window.moveBy(0, 10); //
在原有位置上移动位置
(
偏移量
)
3.
创建一个新的窗口
var win =
window.open("about.htm","winName","height=300,width=400");
//
参数
alwaysLowered //
始终在其它浏览器窗口的后面
(NN)
alwaysRaised //
始终在其它浏览器窗口的前面
(NN)
channelMode //
是否为导航模式
(IE)
copyhistory //
复制历史记录至新开的窗口
(NN)
dependent //
新窗口随打开它的主窗口关闭而关闭
(NN)
fullscreen //
全屏模式
(
所有相关的工具栏都没有
)(IE)
location //
是否显示地址栏
(NN,IE)
menubar //
是否显示菜单栏
(NN,IE)
scrollbars //
是否显示滚动条
(NN,IE)
status //
是否显示状态栏
(NN,IE)
toolbar //
是否显示工具栏
(NN,IE)
directories //
是否显示链接栏
(NN,IE)
titlebar //
是否显示标题栏
(NN)
hotkeys //
显示菜单快捷键
(NN)
innerHeight //
内容区域的高度
(NN)
innerWidth //
内容区域的宽度
(NN)
resizable //
是否可以调整大小
(NN,IE)
top //
窗口距离桌面上边界的大小
(NN,IE)
left //
窗口距离桌面左边界的大小
(NN,IE)
height //
窗口高度
(NN,IE)
width //
浏览器的宽度
4.
与新窗口通讯
win.focus(); //
让新窗口获得焦点
win.document.write("abc"); //
在新窗口上操作
win.document.close(); //
结束流操作
opener.close();