一. JS内部类
JS内部类有: Array, Boolean, Date, Math, Number, String, RegExp
1. Date
<script>
var date = new Date();
document.write(date.toLocaleDateString());
</script>
输出本地格式的时间: 2015年3月3日
2.Math,是一个静态类可以直接用Math调用对象函数
常用的对象方法有:
abs(x), 返回数的绝对值
ceil(x), 对一个数向上取整
floor(x), 对一个数向下取整
max(x, y), 取最大值
min(x, y), 取最小值
round(x), 四舍五入为最接近的整数
random(), 返回一个大于0小于1的16位小数
<script>
document.write(Math.abs(-10) + "<br/>"); //-10的绝对值10
document.write(Math.ceil(4.1) + "<br/>"); //向上取整5
document.write(Math.floor(4.52) + "<br/>"); //向下取整 4
document.write(Math.round(4.5) + "<br/>"); //四舍五入最接近的整数5
document.write(Math.max(1, -1) + "<br/>"); //1
document.write(Math.min(1, -1) + "<br/>"); //-1
document.write(Math.random() + "<br/>"); //0到1之间16位随机小数
document.write("随机获取一个1-100之内的数字<br/>");
function ram(){
var i = Math.random() * 100;
i = Math.round(i);
return i;
}
document.write(ram() + "<br/>");
</script>
2. Date, 是一个动态类必须重新创建实例对象才能调用对象函数,常用函数:
Date(), 返回当前时间
getDate(), 从Date对象返回一个月中的某一天
getDay(), 从Date对象返回一周中的某一天
getMonth(), 从Date对象返回月份
getFullYear(), 从Date对象返回年
getHours(), 从Date对象返回小时数
getMinutes(), 从Date对象返回分钟
getSeconds(), 从Date对象返回秒数
<script>
var date = new Date();
document.write(date + "<br/>"); //这是按照格林威治格式输出时间: Tue Mar 3 02:42:23 UTC+0800 2015
//两句的输出完全一样
document.write(date.toLocaleDateString() + " " + date.getHours() + ":" + date.getMinutes() +":" + date.getSeconds() + "<br/>");
document.write(date.toLocaleString() + "<br/>");
</script>
例: 通过时间判断问候语
6:00 - 8:59 早上好
9:00 - 11:30 上午好
11:31 - 14:30 中午好
14:31 - 17:30 下午好
17:31 - 18:40 傍晚好
18:41 - 23:59 晚上好
0: 00 - 5:59 凌晨好
(1)直接判断
<script>
var date = new Date();
function greet1(date){
var h = date.getHours();
var m = date.getMinutes();
if(h >= 6 && h <9){
document.write("早上好!");
}
else if(h >= 9 && h < 11){
document.write("上午好!");
}
else if((h >= 11 && h < 12) && (m <= 30)){
document.write("上午好!");
}
else if((h >= 11 && h < 12) && (m > 30)){
document.write("中午好!");
}
else if(h >= 12 && h < 14){
document.write("中午好!");
}
else if((h >= 14 && h < 15) && (m <= 30)){
document.write("中午好!");
}
else if((h >= 14 && h < 15) && (m > 30)){
document.write("下午好!");
}
else if(h >= 15 && h < 17){
document.write("下午好!");
}
else if((h >= 17 && h < 18) && m <=30){
document.write("下午好!");
}
else if((h >= 17 && h < 18) && m >30){
document.write("傍晚好!");
}
else if((h >= 18 && h < 19) && (m <= 40)){
document.write("傍晚好!");
}
else if((h >= 18 && h < 19) && (m <= 40)){
document.write("傍晚好!");
}
else if((h >= 18 && h < 19) && (m > 40)){
document.write("晚上好!");
}
else if(h >= 19 && h <= 23){
document.write("晚上好!");
}
else{
document.write("凌晨好!");
}
}
greet1(date);
</script>
(2)转成秒来判断
<script>
function greet2(date){
var h = date.getHours();
var m = date.getMinutes();
var s = h*3600 + m*60;
if(s < 6*3600)
document.write("凌晨好!");
else if(s >= 6*3600 && s < 9*3600)
document.write("早上好!");
else if(s >= 9*3600 && s < (11*3600+31*60))
document.write("上午好!");
else if(s >= (11*3600+31*60) && s < (14*3600+31*60))
document.write("中午好!");
else if(s >= (14*3600+31*60) && s < (17*3600+31*60))
document.write("下午好!");
else if(s >= (17*3600+31*60) && s < (18*3600+41*60))
document.write("傍晚好!");
else if(s >= (18*3600+41*60) && s < 24*3600)
document.write("晚上好!");
}
greet2(date);
</script>
3. String,动态类, 常用函数
indexOf(), 返回某个字符串值在该串中首次出现的位置(即下标)
split(), 把字符串分割成数组
substr(), 提取指定下标开始的指定数目的字符
substring(), 提取指定起始下标到指定终止下标之前的子字符串
charAt(), 返回指定位置的字符
length, 返回长度的属性
toString(), 把数据转成字符串
match() /replace()/ search() 在正则表达式再议
<script>
//注意第一个字符的下标是0
var s = "abcdefghabc";
document.write(s.indexOf('f') + "<br/>"); //5
document.write(s.indexOf("ab") + "<br/>"); // 0
document.write(s.indexOf("ab", 5) + "<br/>"); //表示从下标5之后开始检索, 最后找到是下标8
document.write(s.indexOf('abd') + "<br/>"); //没找到, -1
document.write(s.substr(1, 3) + "<br/>"); //bcd
document.write(s.substring(1, 3) + "<br/>"); //bc
document.write(s.charAt(6) + "<br/>"); //g
</script>
4. Array, 动态类, 常用函数
concat(), 连接多个数组并返回结果
join(), 把数组的所有元素放入一个字符串, 元素通过指定的分隔符进行分隔
pop(), 删除并返回最后一个元素
push(), 向数组末尾添加一个或多个元素并返回新的长度
shift(), 删除并返回首元素
unshift(), 向数组开头添加一个或多个元素并返回新的长度
reverse(), 颠倒元素次序
sort(), 排序
splice(), 删除元素并向数组添加新元素(替换)
<script>
var arr = [1, 2, 3, 4, 5];
document.write(arr + "<br/>");
var m = arr.pop();
document.write("删除末尾的元素<" + m + "><br/>");
document.write(arr + "<br/>");
arr.push(5);
document.write(arr + "<br/>");
arr.unshift(0);
document.write(arr + "<br/>");
arr.push([6, 7]);
document.write(arr + "<br/>");
arr.unshift([-2, -1]);
document.write(arr + "<br/>");
var n = arr.shift();
document.write("删除起始元素<" + n + ">特别注意现在的数组因为向起始添加的元素是数组[-2, -1],所以删除的也是它<br/>");
document.write(arr + "现在末尾元素其实是数组[6, 7]<br/>");
</script>
输出为:
1,2,3,4,5
删除末尾的元素<5>
1,2,3,4
1,2,3,4,5
0,1,2,3,4,5
0,1,2,3,4,5,6,7
-2,-1,0,1,2,3,4,5,6,7
删除起始元素<-2,-1>特别注意现在的数组因为向起始添加的元素是数组[-2, -1],所以删除的也是它
0,1,2,3,4,5,6,7现在末尾元素其实是数组[6, 7]
5. Boolean, 和String一样是一种数据类型, 对象函数:
toString() 把逻辑值转换为字符串并返回结果
valueOf() 返回Boolean对象的原始值
<script>
var a = true;
document.write(typeof a + "<br/>");
a = a.toString();
document.write(typeof a + "<br/>");
var b = new Boolean(true); //就相当于b = true;
document.write(b.valueOf() + "<br/>");
</script>
输出为:
boolean
string
true
6. Number, 数据类型, 常用函数:
toString(), 转成字符串,不带参数默认按十进制显示, 也可以利用参数控制数制
toFixed(), 转成字符串并可以指定小数点后的位数
toExponential(), 转成字符串并可以指定小数点后的位数采用指数计数法表示
valueOf(), 返回一个Number数值
<script>
var a = 5201314;
document.write(typeof a + "<br/>");
var m = a.toString();
document.write("十进制" + typeof m + "类型" + m + "<br/>");
var m = a.toString(2);
document.write("二进制" + typeof m + "类型" + m + "<br/>");
var b = new Number(314.15926);
var m = a.toString(8);
document.write("八进制" + typeof m + "类型" + m + "<br/>");
var m = a.toString(16);
document.write("十六进制" + typeof m + "类型" + m + "<br/>");
document.write(b.valueOf() + "<br/>");
document.write("保留到小数点第三位" + b.toFixed(3) + "<br/>");
document.write("指数计数保留到小数点第三位" + b.toExponential(3) + "<br/>");
</script>
输出为:
number
十进制string类型5201314
二进制string类型10011110101110110100010
八进制string类型23656642
十六进制string类型4f5da2
314.15926
保留到小数点第三位314.159
指数计数保留到小数点第三位3.142e+2
二. 自定义函数
三. 系统函数
isNaN(), escape(), unescape(), decodeURI(), decodeURIComponet(), encodeURI(), encodeURIComponent(), eval(), isFinite(),
getClass(), parseFloat(), parseInt()
注意isNaN(v)判断的是不是<非数字>, 如果v是个数字就会返回false;
而且isNaN()有缺陷,例如
<script>
var a = 0000190;
document.write(a + " " + isNaN(a)); //输出的是190 false, 看上去不是个数字其实是
</script>