我爱编程

<JavaScript>总结:知识点

2018-05-22  本文已影响26人  玉圣

一、网页中的相关属性和参数使用:

   window.location.pathname;  //形如:/{根目录}/../{当前文件目录}/{文件名.html}
   document.domain;   //形如:localhost
   window.location.hash = 3;  //设置hash,地址栏显示为http://ip地址/aaa.html#3
   console.log(window.location.hash);  //结果为#3

二、函数:

1、arguments对象:
<script>

    function sum() {
        console.log(arguments);
        var vals = 0;
        for (var i = 0; i < arguments.length; i++) {
            console.log(arguments[i]);
            vals += (Number(arguments[i]) || 0);  //为了过滤含有非数字的字符串
        }
        return vals;
    }

    var n = sum("44", 2, 3);
    console.log(n);

</script>

例子2:动态设置CSS属性:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>arguments对象及动态设置CSS属性</title>

    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: red;
        }

    </style>
</head>
<body>
<button id="btn1">改变颜色</button>
<button id="btn2">改变长度</button>

<div id="box"></div>

<script>
    function setCssStyle(obj) {
        var length = arguments.length;
        if (arguments.length%2===0) {
            length = arguments.length - 1;
        }
        for (var i = 1; i < length; i+=2) {
            obj.style[arguments[i]] = arguments[i+1];
        }
    }

    var box = document.getElementById("box");
    var btn1 = document.getElementById("btn1");
    var btn2 = document.getElementById("btn2");

    btn1.onclick = function() {
        setCssStyle(box, "background-color", "blue");
    };

    btn2.onclick = function() {
        setCssStyle(box, "width", "200px");
    };

</script>
</body>
</html>
4、apply和call方法作用:

示例:

        //修改之前:
        function test1() {
            //谁调用,this则是谁
            console.log(this);
        }
        test1();  //打印结果为window对象

        //修改之后:
        function test2() {
            console.log(this);

        }

        var obj = {"name": "zhangsan"};
        window.test2.apply(obj);  //打印结果为修改的对象obj
        window.test2.call(obj);  //打印结果为修改的对象obj

示例:

        function sum(a, b) {
            console.log(this, a + b);
        }

        window.sum.call(obj, 1, 2); //结果为 obj对象 3,1传给了a,2传给了b
        window.sum.apply(obj, [2, 5]); //结果为 obj对象 7,2传给了a,5传给了b

2.3、真数组转换为伪数组

        // 将真数组转换为伪数组
        var arr = [1, 2, 3, 4, 5];
        var obj = {};
        [].push.apply(obj, arr);
        console.log(obj);   //{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, length: 5}

注意: [] 表示数组
1)通过[].push找到数组中的push方法
2)通过apply(obj)将找到的push方法内部的this修改为自定义的obj对象
3)将传入数组中的元素依次取出,传递给push的形参
则数组中的属性全部赋给了obj对象,完成了转换

真数组转换为伪数组

2.4、伪数组转换为真数组
使用apply(或call)可以将真数组转换为伪数组,那么同理,将apply中的参数互换,就可以达到将伪数组转换为真数组了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>真伪数组的转换</title>

    <script>
        window.onload = function () {
            //系统自带的伪数组
            var divs = document.querySelectorAll("div");

            var arr = [];

            [].push.apply(arr, divs);
            console.log(arr);

            //自定义的伪数组
            var obj = {0 : "zhangsan", 1 : 8, length : 2};

            var arr2 = [];
            [].push.apply(arr2, obj);

            // var arr2 = [].slice.apply(obj);

            // var arr2 = [].slice.call(obj);

            console.log(arr2);
        };


    </script>
</head>
<body>
<div>我是div</div>
<div>我是div</div>
<div>我是div</div>
</body>
</html>

注意:
在IE8的低版本中,使用[].push.apply(arr2, obj); 这种方式,会报错,因此,如果要将伪数组转换为真数组,通用的方式为:

var arr2 = [].slice.call(obj);
5、JSON的使用:
    <script>
        var j = '{"name" : "zhangsan", "age" : 18}';
        var obj = JSON.parse(j);
        console.log(obj);

    </script>
打印结果
1.2、注意:
在低版本IE中,不可以使用原生的JSON.parse方法,但是可以使用第三方的框架json2.js ,使用的方法和原生的一样。

三、属性:

1、JS获取CSS中的样式:

在开发中,要想获得CSS的样式,有如下方式:

window.getComputedStyle("元素", "伪类");

3)兼容写法:

    function getStyleAttr(obj, attr) {
        if (obj.currentStyle) { //IE 和 Opera
            return obj.currentStyle;
        } else {    //其他W3C标准浏览器
            return window.getComputedStyle(obj, null)[attr];
        }
    }
2、cookie:
    <script>
        window.onload = function () {
            //默认情况
            console.log(document.cookie);   //结果未打印任何内容

            //设置数据后
            document.cookie = "age=333";
            console.log(document.cookie);   //结果为:age=333

            var date = new Date(); //今日为2018年06月04日
            date.setDate(date.getDate()+1); //设置过期时间为明天
            document.cookie = "name=zhangsan;expires=" + date.toGMTString() + ";"
        };
    </script>
设置过期时间
document.cookie = "name=zahgnsan;domain=aaa.com";  //设置同一站点

默认情况下只能删除默认路径中保存的cookie,如果想删除指定路径下的cookie,那么必须在删除的时候指定路径才可以。

    <script>
        window.onload = function () {
            //默认情况
            console.log(document.cookie);   //结果未打印任何内容

            //设置数据后
            document.cookie = "age=333";
            console.log(document.cookie);   //结果为:age=333

        };
    </script>
默认情况 设置数据

四、正则表达式:

注意:
1、要使用正则表达式进行匹配,需要在匹配表达式前后加上/
格式为:

  /表达式/

2、在js中,如果匹配成功一次,就不在继续匹配了,如果需要全部匹配,可以使用g

1、去除字符串前后空格:

其中的^ 表示匹配开头,$ 表示匹配结尾,g 为全局匹配

    <script>
        var s = "  aa bbccb  ";
        var ss = s.replace(/^\s+|\s+$/g, "");
        console.log(ss);

    </script>
上一篇 下一篇

猜你喜欢

热点阅读