一. 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>