js 里面事件的委托、cookie以及严格模式

事件委托

1、什么是事件委托
事件委托,通俗地来讲,就是把一个元素响应事件的函数委托到另一个元素。
2、事件委托的原理
一般来讲,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数。
3、事件委托的优点
1、减少了事件注册,节省了内存,如在 table 上代理所有 tr 的 click 事件
2、简化了 dom 更新时的事件操作,如现在 table 内增加了一行 tr,不用再为这个 tr 添加事件了
4、事件委托的缺点
1、事件委托基于冒泡,不冒泡的事件无法委托,如 blur、focus、mouseenter、mouseleave、input、keydown、keyup
2、可能被中间层阻止
3、事件会频繁的被调用,比如 tr 的事件被代理到 body 上

<ul class="menu">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<script>

    var ulele=document.querySelector(".menu");
    ulele.onclick=function (e){
       var target= e.target|| e.srcElement;
        if(target.nodeName.toLowerCase()=="li")
        {
            console.log(1);
        }
    }
</script>

target可以返回事件的目标节点,点击li时由于冒泡原理,会冒泡到ul上,触发ul绑定的点击事件

js cookie

1、什么是cookie
Cookie 是一些数据, 存储于你电脑上的文本文件中。
当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。
Cookie 的作用就是用于解决 “如何记录客户端的用户信息”:
1、当用户访问 web 页面时,他的名字可以记录在 cookie 中。
2、在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。
Cookie 以名/值对形式存储, 当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端通过这种方式来获取用户的信息

document.cookie = "USER_KEY=xiaoming;domain=localhost;expires=Fri, 10 Jul 2020 02:60:06 GMT;path=/";
 document.cookie = "PWD=ABCED12GH;domain=localhost;expires=Fri, 10 Jul 2020 02:60:06 GMT;path=/";

cookie的有效期过后会自动删除
expires 有效期
path 指当前cookie的有效路径
设置成功之后读取cookie

var cookie = document.cookie.split(";");
    console.log(document.cookie.replace(/\ /g, ""));
    var user = {};
    var a = cookie[0].split("=");
    var b = cookie[1].split("=");
    user[a[0]] = a[1];
    user[b[0]] = b[1];
    console.log(user);

中文的转码及解码
escape()转码 不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。
unscape()解码
*数字 字母 ,+,-,.,/,@,_, 不能转码 解码

 console.log(escape("张三"));
  console.log(unescape(escape("张三")));

编码和解码
atob():解码一个Base64字符串。
btoa():从一个字符串或者二进制数据编码一个Base64字符串

console.log(window.btoa("abc123efg"));
console.log(window.atob("YWJjMTIzZWZn"));

console.log(window.btoa(escape("张三")));
console.log(unescape(window.atob("JXU2QkRCJXU4QzQ2")));

中文要在转码之后才可以编码加密

js严格模式

使用 “use strict” 指令
它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。
“use strict” 的目的是指定代码在严格条件下执行。
严格模式下你不能使用未声明的变量。
严格模式的限制
1、不允许使用为声明的变量

use strict"
     var a;
     a=10;
     console.log(a);//报错

2、不允许删除变量或对象。

   "use strict"
       var a=20;
       delete  a;
       console.log(a); //报错

3、不允许删除函数。

"use strict";
function x(p1, p2) {};
delete x;                // 报错 

4、不允许变量重名:(函数中的形参)

"use strict";
function x(p1, p1) {};   // 报错

5、不允许使用转义字符:

"use strict";
var x = \010;            // 报错

6、不允许使用八进制:

"use strict";
var x = 010;             // 报错

7、不允许对只读属性赋值:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // 报错

8、不允许对一个使用getter方法读取的属性进行赋值
9、不允许删除一个不允许删除的属性:

"use strict";
delete Object.prototype; // 报错

10、变量名不能使用 “eval” 字符串:

"use strict";
var eval = 3.14;         // 报错

11、变量名不能使用 “arguments” 字符串:

"use strict";
var arguments = 3.14;    // 报错

12、禁止this关键字指向全局对象。

异常处理

js中的异常处理语句有两个,一个是try……catch……,一个是throw。try……catch用于语法错误,错误有name和message两个属性。throw用于逻辑错误。对于逻辑错误,js是不会抛出异常的,也就是说,用try catch没有用。这种时候,需要自己创建error对象的实例,然后用throw抛出异常。

 //这里打开数据库

    try {
        //写的是可能出现异常的代码
        fun1();
        console.log(1);
        //访问数据库
    }
    catch (e) {
        console.log(e);
        //throw e;
        //自定义错误信息
        throw  new Error("函数不存在");
    }
    finally {
        //最终怎么处理
        console.log(1);
        //关闭数据库
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值