JS基础知识二(函数、全局/局部变量、对象、方法)

一. 函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //定义一个函数
        function sayHello(name) { //注意:函数参数的声明不需要加上var关键字。
            alert("hello " + name);
        }

        function getName() {
            return "小宝"; //如果需要返回数据就使用return。否则就不需要写return。
        }

        var getName = function(name) { //如果存在同名函数,那么后面定义函数会覆盖前面定义的函数。
            return "大宝";
        };

        //sayHello("python"); //如果函数有参数,调用函数的时候需要传入参数。

        var username = getName();
        alert(username);
    </script>
</head>
<body>

</body>
</html>

二. 全局变量和局部变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //var num = 10; //全局变量,可以被改页面中所有的函数引用
        function test1() {
            num = 10; //局部变量,只能够在当前函数中有效。
                    // 在函数中定义变量时候不加var,浏览器就会在全局中定义该变量。
            alert(num);
        }

        function test2() {
            alert(num); //可以访问到test1函数中定义的num。为什么?
        }

        test1();
        test2();
    </script>
</head>
<body>

</body>
</html>

三. 自定义对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //自定义对象
        function Person() {}

        //使用New关键字创建对象
        var person = new Person(); //创建User对象,赋值给user变量
        //对象可以有属性(事物特征)和方法(事物行为)
        person.name = "张三"; //给person对象添加name属性
        person.age = 18; //给person对象添加age属性

        person.eat = function() { //给person对象添加eat方法(行为)
            alert(this.name + "正在吃饭..."); //this代表当前方法的调用者对象
        };

        //调用对象的属性
        //alert(person.name + ", " + person.age);
        //调用对象的方法
        person.eat();
    </script>
</head>
<body>

</body>
</html>

四. 创建对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function Person(name, age) {
            this.name = name;  //this就是代表当前对象。
            this.age = age;

            this.sleep = function() {
                alert(this.name + "正在睡觉..."); //this代表当前函数的调用者对象
            }
        }

        var person = new Person("李四", 20);
        //alert(person.name + "," + person.age);
        person.sleep();
    </script>
</head>
<body>

</body>
</html>

五. 使用Object创建对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var person = new Object();
        person.name = "小钟";
        person.age = 25;
        person.code = function() {
            alert(this.name + "正在写代码...");
        };

        // alert(person.name + ", " + person.age);
        person.code();
    </script>
</head>
<body>

</body>
</html>

六. 使用json语法创建对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //json语法创建对象
        var person = {
            name : "太白金星",
            age : 20,
            run: function() {
                alert(this.name + "正在跑步...");
            }
        };

        // alert(person.name + ", " + person.age);
        person.run();
    </script>
</head>
<body>

</body>
</html>

七. string对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var s1 = "10";
        var s2 = new String("10");
        var s3 = new String("10");
        //alert(typeof(s1)); //string
        //alert(typeof(s2)); //object
        //alert("s1 == s2 ?" + (s1 == s2)); //true
        //alert("s2 == s3 ?" + (s2 == s3)); //false
    </script>
</head>
<body>

</body>
</html>

八. string对象的常用方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var country = "中国".fontcolor("red"); //<font color=“red”>中国</font>
        document.write(country.concat("<br/>"));

        var str = "Hello World Hello World";
        document.write(str.charAt(6) + "<br/>"); //根据索引查找字符
        document.write(str.charCodeAt(6) + "<br/>"); //根据索引查找字符的unicode编码
        document.write(str.indexOf("World") + "<br/>");  //查找字符串中指定子串的第一次出现的索引值
        document.write(str.lastIndexOf("World") + "<br/>"); //查找字符串中子串最后出现的索引值
        document.write(str.substring(12, 17) + "<br/>"); //提取字符串指定开始和结束位置的内容
        document.write(str.substr(12, 5) + "<br/>"); //提取字符串中指定内容,第一个参数开始位置,第二个参数提取字符的长度
        document.write(str.valueOf()); //返回字符串的内容
    </script>
</head>
<body>

</body>
</html>

九. 案例:实现字符串的反转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //案例:定义一个函数,实现字符串的反转功能
        function reverse(srcStr) {
            //定义一个循环,从字符串的右边开始获取每一个字符
            var tempStr = "";
            for (var i = srcStr.length - 1; i >= 0; i--) {
                var c = srcStr.charAt(i);
                //把获取到的字符重新拼接成新的字符串
                // tempStr = tempStr + c;
                tempStr += c;
            }
            return tempStr;
        }

        var s = reverse("abcd");
        alert(s);
    </script>
</head>
<body>

</body>
</html>

十. Number对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*var num = 10;
        // var num = new Number(10);
        document.write("二进制:" + num.toString(2) + "<br/>");
        document.write("三进制:" + num.toString(3) + "<br/>");
        document.write("八进制:" + num.toString(8) + "<br/>");
        document.write("十进制:" + num.toString() + "<br/>");
        document.write("十六进制:" + num.toString(16) + "<br/>");*/

        /*
            执行parseInt函数的时候,默认它只会把字符串第一个非数字(包含空格)前面字符进行转换。
            如果第一个字符是非数字(不包含空格),那么转换结果为NaN。
        */
        var s = "1 0"; //把字符串转换成Number
        var num = parseInt(s); //把字符串转换成number
        document.write("num的类型:" + typeof(num) + "<br/>");
        document.write(num + "<br/>"); //NaN
    </script>
</head>
<body>

</body>
</html>

十一. Math对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        document.write("绝对值: " + Math.abs(-10) + "<br/>");
        document.write("向上取整: " + Math.ceil(3.14) + "<br/>");
        document.write("向下取整: " + Math.floor(3.14) + "<br/>");
        document.write("四舍五入: " + Math.round(3.14) + "<br/>");
        document.write("求最大值: " + Math.max(3, 5) + "<br/>");
        document.write("求最小值: " + Math.min(3, 5) + "<br/>");
        document.write("生成随机数: " + Math.random() + "<br/>"); //生成0~1之间的随机数,不包含1.
    </script>
</head>
<body>

</body>
</html>

十二. 生成四位数验证码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //案例:在网页上生成一个四位数的验证码
        var vrcode = "";
        for (var i = 0; i < 4; i++) {
            var num = Math.floor(Math.random() * 10); //0~9.99999999999999999
            vrcode += num;
        }
        document.write(vrcode);
    </script>
</head>
<body>

</body>
</html>

十三. Date对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function getDate(d) {
            //alert(d.getTime()); //获取当前时间的毫秒数
            var yy = d.getFullYear(); //获取年份
            var mm = d.getMonth() + 1; //获取月份
            var dd = d.getDate();  //获取日
            var hh = d.getHours(); //获取小时
            var min = d.getMinutes(); //获取分钟
            var sec = d.getSeconds(); //获取秒
            //document.write(yy + "年" + mm + "月" + dd + "日 "
             //   + hh + "时" + min + "分" + sec + "秒");
            return yy + "" + mm + "" + dd + ""
               + hh + "" + min + "" + sec + "";
        }

        var d = new Date(); //代表当前时间的Date对象
        var dateStr = getDate(d);
        document.write(dateStr);
    </script>
</head>
<body>

</body>
</html>

十四. Array对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*var arr1 = new Array(); //定义空数组
        var arr2 = new Array(10); //定义默认长度的数组
        var arr3 = new Array(10, 20, 30); //定义数组时候指定数组元素*/

        var arr4 = [10, 20, 30];
        var arr5 = [11, 22, 33];
        //arr4 = arr4.concat(40, 50); //该方法返回拼接后的新数组
        arr4 = arr4.concat(arr5, 99, 100);
        //document.write("第一个元素: " + arr4[0] + "<br/>");
        //document.write("第二个元素: " + arr4[1] + "<br/>");
        //循环数组
        for (var i = 0; i < arr4.length; i++) {
            document.write(arr4[i] + ",");
        }
    </script>
</head>
<body>

</body>
</html>

十五. Array对象的常用方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //把数组转换成字符串
        //第一个参数代表待转换的数组,第二参数代表分隔符
        //返回数组的字符串表示形式
        function join(arr, sep) {
            var arrStr = "";
            for (var i = 0; i < arr.length; i++) {
                arrStr = arrStr + arr[i] + sep;
            }
            return arrStr.substring(0, arrStr.length - 1);
        }

        var arr = ["java", "python", "go"];
        //var str = join(arr, ":");
        var str = arr.join(";");
        alert(str);
    </script>
</head>
<body>

</body>
</html>

十六. 扩展对象功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*//查询数组的某个元素,返回该元素在数组中的索引值。如果没有该元素,就返回-1。
        function search(arr, key) { //key代表要查找的元素
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] == key) {
                    return i;
                }
            }
            return -1;
        }

        var arr = [20, 33, 9, 11, 100];
        var i = search(arr, 99);
        alert(i);*/

        Array.prototype.search = function(key) {
            for (var i = 0; i < this.length; i++) { //this代表当前数组对象
                                                    //谁调用search方法,this就代表谁
                if (this[i] == key) {
                    return i;
                }
            }
            return -1;
        };

        var arr = [20, 33, 9, 11, 100];
        var i = arr.search(33);
        alert(i);
    </script>
</head>
<body>

</body>
</html>

十七. push和pop方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var arr = new Array();
        arr.push("小宝");
        arr.push(18);
        arr.push(new Date());

        //alert(arr);
        var temp = arr.pop(); //移除并返回最后一个元素
        alert(temp);
        alert(arr);

    </script>
</head>
<body>

</body>
</html>

十八. reverse方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var arr = [10, 20, 30];
        /*var newArr = new Array();
        for (var i = arr.length - 1; i >= 0; i--) {
            newArr.push(arr[i]);
        }
        alert(newArr);*/
        arr.reverse(); //反转数组
        alert(arr);
    </script>
</head>
<body>

</body>
</html>

十九. slice方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //slice: 返回指定开始和结束位置元素所组成的新数组
        var arr = [10, 20, 30, 40, 50, 99, 100];
        function slice(arr, start, end) {
            var newArr = new Array();
            while (start < end) {
                newArr.push(arr[start]);
                start++;
            }
            return newArr;
        }

        var tempArr = slice(arr, 2, 5);
        //var tempArr = arr.slice(2, 5); //提取数组中开始和结束位置之间的元素,
                                    // 并返回这些元素锁组成的新数组
        alert(tempArr);
    </script>
</head>
<body>

</body>
</html>

二十. splice方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var arr = [10, 20, 30, 40, 50, 99, 100];
        var delArr = arr.splice(2, 3, 11, 22, 33); //从下标为2的元素开始移除3个元素,
                                                // 并且在原来移除位置插入11, 22, 33
        alert(delArr);
        alert(arr);
    </script>
</head>
<body>

</body>
</html>

二十一. sort方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var arr = ['a', 'c', 'h', 'e'];
        //var arr = [10, 44, 22, 15]
        //arr.sort(); //按照元素的ascii码进行升序排列
        //alert('a' - 'b');
        //alert("a".charCodeAt(0));
        arr.sort(function(a, b) {
            // return a - b; //升序
            //return b - a; //序列
            return b.charCodeAt(0) - a.charCodeAt(0);
        });
        alert(arr);
    </script>
</head>
<body>

</body>
</html>

二十二. tofixed方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        var num = 13 / 3;
        alert(num.toFixed(2)); //返回2位小数的字符串
    </script>
</head>
<body>

</body>
</html>
原文地址:https://www.cnblogs.com/shawnhuang/p/10438062.html