JavaScript学习笔记(四)

1、js中的内置对象

1.1、Date对象

获取年份信息:getFullYear();

获取月份信息:getMonth()+1

获取天数:getDate();

获取小时:getHours();

获取分钟:getMinutes()

获取秒:getSeconds()

获取星期:getDay()(需要注意,周末返回是0)

返回当前时间距离1970-1-1之间的毫秒数:getTime()

关于动态获取当前时间的案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var timeOutInt=0;
        function getCurrentTime(){
            var date = new Date();
            //获取年份信息
            var myYear = date.getFullYear() ;
            //获取月份信息
            var myMonth = date.getMonth()+1 ;
            //获取当前月中天数
            var mydate = date.getDate();
            //获取小时
            var hour = date.getHours();
            //获取分钟
            var minutes =    date.getMinutes();
            //获取秒
            var seconds = date.getSeconds() ;
            //星期
            var day = date.getDay();
            var timeInfo = myYear+"-"+myMonth+"-"+mydate+" "+hour+":"+minutes+":"+seconds;
            //js的执行顺序是从上向下执行
            var divObject =document.getElementById("time");
            divObject.innerHTML = timeInfo;
            //定时器
            timeOutInt=setTimeout("getCurrentTime()",1000);
        }
        function mystop(){
            //清除定时器
            clearTimeout(timeOutInt);
        }
    </script>
</head>
<body >
    <div id = "time"></div>
    <input type="button" onclick="getCurrentTime()" value="启动">
    <input type="button" onclick="mystop()" value="停止">
</body>
</html>

1.2、String对象

在js中定义字符串只要使用双引号或者单引号引起来就可以了,那么也可以采用new String()的方式来创建一个字符串

熟悉一下字符串换的常见的方法

charAt(index):返回指定索引出的字符串

concat 方法(args...):字符串连接

indexOf (“searchStr”):返回搜寻的字符串的首次出现的位置

lastIndexOf (“searchStr”):返回搜寻的字符串最后一次出现的值

 <script type="text/javascript">
        var str = "hello" ;
        console.log(str.charAt(2));
        console.log(str.concat('world','aaa','bbb'));
        console.log(str.indexOf("l"))
        console.log(str.lastIndexOf("l"))
</script>

split("str"):按照指定字符拆分字符串

substr(start,length)

subString(start,end)

toLowerCase()

toUpperCase()

var str = "hello" ;
console.log(str.substr(1,3))
console.log(str.substring(1,3));
console.log(str.toUpperCase());
console.log(str.toUpperCase().toLowerCase())

1.3、Array

数组的定义方式:

方式一:

var array = new Array([size]);

方式二:开发中使用最多

var array = [];

讲解java时候,讲过数组的静态初始化

  var array1 = new Array("hello","world","helloworld");
  var array2 = ["a","b",new Date(),"c"];

数组的相关属性

数组有一个length属性。表示数组的长度,但是在js中数组的长度受最后一个元素决定

数组的访问通过下标访问,下标从0开始

数组的常见方法如下:

concat(array1...):将多个数组组合成一个数组

arrayObj.join(separator):将数组中的元素通过制定的分割符连接起来

pop():移除数组中的最后一个元素并返回该元素。

 var array=["hello","world","helloworld"];
 var str = array.pop();
 console.log(str);
 console.log(array.length);
 for(var i = 0;i<array.length;i++) {
    console.log(array[i]);
 }

push():将新元素添加到一个数组中,并返回数组的新长度值

 var array=["hello","world","helloworld"];
 var str = array.pop();
 var size=array.push("lisi");
 console.log(size);
 size=array.push("wangwu");
 console.log(size);
 for(var i = 0;i<array.length;i++) {
    console.log(array[i]);
 }

reverse():反置数组

shift():移除数组中的第一个元素并返回该元素。

slice(start, [end]) :返回数组中的一段

sort(function(){}):排序,其中function()表示的是排序一种策略

  var array = [22,44,56,34,78,99];
  console.log(array.sort(function(num1,num2){
        return num2-num1;
  }));

splice 方法
从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。

arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])

 var array = [22,44,56,34,78,99];
 array.splice(0,2,"a","b");
 console.log(array);

unshift:将指定的元素插入数组开始位置并返回该数组。

arrayObj.unshift([item1[, item2 [, . . . [, itemN]]]])

 var array = [22,44,56,34,78,99];
 var size = array.unshift("a","b","c");// 返回9
 console.log(array);//["a","b","c",22,44,56,34,78,99]
 console.log(size)

在js中实际上我们定义数组也可以使用以下方式

 <script type="text/javascript">
        var array=["a"];
        //格式:map的格式
        array["name"]="zhangsan";
        array["age"]=15;
        //console.log(array.length);
        //console.log(array["name"]);
        //console.log(array["age"]);

        //这里需要另外一种语法
        for (i in array){
            console.log(i,array[i]);
        }
    </script>

运行结果

mark

在静态初始化的数组中,a实际上是存在value上,a的key为0,此时我们可以认为数组也可以是map格式的

案例:下拉列表的级联操作

参考代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var array=[];
        array["江苏"]=["南京","苏州","徐州","无锡","连云港"];
        array["安徽"]=["合肥","宿州","蚌埠"];
        array["江西"]=["九江","南昌"];
        window.onload=function(){
            var prov = document.getElementById("prov");
            //填充所有的省份信息
            for(p in array) {
                var op = new Option(p,p);
                prov.appendChild(op);
            }
            var city = document.getElementById("city");
            var citys = array["江苏"];
            for(var i = 0 ;i<citys.length;i++) {
                var op = new Option(citys[i],citys[i]);
                city.appendChild(op);
            }
        }
        function selectCity(value){
            var city = document.getElementById("city");
            //清除city里面的内容
            city.innerHTML="";
            var citys = array[value];
            for(var i = 0 ;i<citys.length;i++) {
                var op = new Option(citys[i],citys[i]);
                city.appendChild(op);
            }
        }
    </script>
</head>
<body>
    <!--onchange当内容发生变化时,调用此事件-->
    <select id="prov" onchange="selectCity(this.value)">

    </select>
    <select id="city">

    </select>
</body>
</html>

1.4、Math对象

Math.ceil(number)
Math.floor(number)
Math.random( )
Math.round(number) 

案例(面试的时候)

<script type="text/javascript">
    //向上取整
    console.log(Math.ceil(15.3));  //结果为16
    console.log(Math.ceil(-15.9)); //结果为-15

    //向下取整
    console.log(Math.floor(15.3));  //结果为15
    console.log(Math.floor(-15.9)); //结果为-16

    //随机数
    console.log(Math.random());
    console.log(Math.round(15.5)); //16
    console.log(Math.round(-15.5)); //-15
    console.log(Math.round(-15.6)); //-16
</script>

1.5、函数对象

函数定义的方式:

 function myFun(){
    alert("hello");
 }
 myFun();
 var myFun2=function(){
    alert("world");
 }
 myFun2();
 (function(){
     alert("helloworld");
 })();

var add=function(a,b) {
    alert(a+b);
};
add(1,2);

var myfun3 = new Function("a","b","alert(a+b)");
myfun3(3,5);

对于最后一种方式的解释:

functionName = new Function( [argname1, [... argnameN,]] body );

参数
functionName

必选项。最新创建函数的名称

argname1...argnameN

可选项。函数接收的参数列表。

body

可选项。包含调用该函数时被执行的 JScript 代码块的字符串。

在js中函数可以重载吗?面试中会涉及到一个问题

在js中不能像java那样发生重载,但是我们可以通过其他机制来实现重载

  var myFun=function(a,b){
            console.log("myFun1 invoked...")
            console.log(a,b);
   };
        //在运行中,同一时刻一个变量的引用只能指向一个堆
        myFun = function(a,b,c){
            console.log("myFun1 invoked2...")
            console.log(a,b,c);
        };

        myFun(1,2);
        myFun(1,2,3);

如何实现重载呢?

 myFun = function(){
          if(arguments.length==2) {
              return arguments[0]+arguments[1];
          }else if(arguments.length==3) {
              return arguments[0]+arguments[1]+arguments[2];
          }

        };
        alert(myFun(1,2));
        alert(myFun(1,2,3));

总结:在js中函数存在一个隐式参数,arguments,表示函数实际传入的参数,它是一个数组,通过这个参数我们可以实现重载

此外,对于每个函数,都有一个length属性,那么这个属性表示这个函数期望传递的参数的个数

猜你喜欢

转载自blog.51cto.com/11230344/2308005
今日推荐