1031

mac2024-05-09  48

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); } }

适合事件委托的事件:click,mousedown,mouseup,keydown,keyup,keypress。

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

最新回复(0)