10/31

HTTP和HTTPS的区别

1.Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
2.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

事件委托

参考文档:https://www.cnblogs.com/liugang-vip/p/5616484.html
名词解释:JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。(相当于一群人要做同样一件事,最后派出一个代表去办这件事情,也就是说程序中现有的dom节点和新添加的dom节点都是有事件的。)

使用原因:页面事件访问dom的次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互就绪时间。所以用事件委托,就会将所有的操作放到js程序里面,与dom的操作就只需要交互一次,这样就能大大的减少与dom的交互次数,提高性能。

原理:事件冒泡。

//实现功能是点击li,弹出123
<ul id="ul1">
    <li>111</li>
    <li>222</li>
    <li>333</li>
    <li>444</li>
</ul>
window.onload = function(){
    var oUl = document.getElementById("ul1");
   oUl.onclick = function(){
        alert(123);
    }
}

适合事件委托的事件:clickmousedownmouseupkeydownkeyupkeypress

JavaScript的数据类型都有什么?

基本数据类型:String,Boolean,number,undefined,object,Null;
引用数据类型:对象、数组、函数

深拷贝和浅拷贝及其应用
socket连接过程的三个步骤

1.服务器监听:服务器实时监控网络状态等待客户端发来的连接请求。
2.客户端请求:客户端根据远程主机服务器的IP地址和协议端口向其发起连接请求。
3.连接确认:服务端收到socket的连接请求之后,就响应请求,把服务端socket描述发给客户端,客户端收到后一旦确认,则双方建立连接,进行数据交互。socket连接一旦建立就保持连接状态,而http连接则不一样,它基于tcp协议的短连接,也就是客户端发起请求,服务器响应请求之后,连接就会自动断开,不会一直保持。

在浏览器输入域名后的解析过程

1.浏览器根据地址去本身缓存中查找dns解析记录,如果有,则直接返回IP地址,否则浏览器会查找操作系统中(hosts文件)是否有该域名的dns解析记录,如果有则返回。
2.如果浏览器缓存和操作系统hosts中均无该域名的dns解析记录,或者已经过期,此时就会向域名服务器发起请求来解析这个域名。
3.请求会先到LDNS(本地域名服务器),让它来尝试解析这个域名,如果LDNS也解析不了,则直接到根域名解析器请求解析。
4.跟域名服务器给LDNS返回一个所查询的主域名服务器(gTLDServer)地址。
5.此时LDNS再向上一步返回gTLD服务器发起解析请求。
6.gTLD服务器接收到解析请求后查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server通常就是你注册的域名服务器(比如阿里dns、腾讯dns等)
7.Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器
8.返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间有TTL值控制。
9.把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。

闭包

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。

闭包的特性:
1.函数内再嵌套函数
2.内部函数可以引用外层的参数和变量
3.参数和变量不会被垃圾回收机制回收//li节点的onclick事件都能正确的弹出当前被点击的li索引

 <ul id="testUL">
    <li> index = 0</li>
    <li> index = 1</li>
    <li> index = 2</li>
    <li> index = 3</li>
</ul>
<script type="text/javascript">    var nodes = document.getElementsByTagName("li");    for(i = 0;i<nodes.length;i+= 1){
        nodes[i].onclick = (function(i){                  return function() {
                     console.log(i);
                  } //不用闭包的话,值每次都是4                })(i);
    }</script>

执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在
使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源
因为say667()的内部函数的执行需要依赖say667()中的变量
这是对闭包作用的非常直白的描述
function say667() { // Local variable that ends up within closure
var num = 666; var sayAlert = function() {
alert(num);
}
num++; return sayAlert;
} var sayAlert = say667();
sayAlert()//执行结果应该弹出的667

扫描二维码关注公众号,回复: 9966331 查看本文章
发布了80 篇原创文章 · 获赞 82 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42893625/article/details/102837852